質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

761閲覧

C#でOpenGLのバッファオブジェクトなどを解放しないときの不利とは

tnisikawajp2010

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/09 04:55

VS2017でC#,OpenTKを勉強中です。
2、3のお手本のページで勉強していますが、
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
GL.BindVertexArray(0);
GL.UseProgram(0);
GL.DeleteBuffer(VertexBufferObject名);
GL.DeleteVertexArray(VertexArrayObject名);
GL.DeleteProgram(shaderのHandle);
などが、作者によってあったりなかったりします。
これらを実行しなかったら、プログラムはどういう不利を
受けるのでしょうか。ネットを探しましたが、リファレンスでの説明、
その他の説明、解放の意味説明などが見つかりません。
試作プログラムでは、上記を全部実行しなくても、正常に実行、終了、再会

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/09 05:07

いかにもメモリリークしそうですが、マニュアルを読んでみたらどうですか? 不要な関数であればそもそも実装されていないと思いますし、必要な関数であれば何をするものか書いてあると思います。
tnisikawajp2010

2020/05/12 11:26

回答ありがとうございます。 マニュアルは英文を翻訳して読んだつもりですが、見つけられませんでした。 解放しなくても、とりあえず実害は出てないように見えます。
Zuishin

2020/05/12 11:28

何をする関数か書いてありませんでしたか? それは本当にマニュアルですか?
tnisikawajp2010

2020/05/13 10:38

Zuishinさん フォローありがとうございます。 二つのページを見ました。 ひとつめのhttps://opentk.net/api/index.htmlでは GL.BindBuffer(BufferTarget.ArrayBuffer, 0); GL.BindVertexArray(0); を見つけられない ふたつめのhttp://jeske.github.io/opentkr-doxygen/html/class_open_t_k_1_1_gra phics_1_1_open_g_l_1_1_g_l.html#ac9977ce49ff193aeee76180bdf96d871では static void OpenTK.Graphics.OpenGL.GL.BindBuffer ( OpenTK.Graphics.Open GL.BufferTarget target, Int32 buffer ) [requires: v1.5] Bind a named buffer object Parameters target Specifies the target to which the buffer object is bound. The sym bolic constant must be GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_ COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BU FFER, GL_PIXEL_UNPACK_BUFFER, GL_TEXTURE_BUFFER, GL_TRANSFO RM_FEEDBACK_BUFFER, or GL_UNIFORM_BUFFER. buffer Specifies the name of a buffer object. http://jeske.github.io/opentkr-doxygen/html/class_open_t_k_1_1_graphics_1_1_ope n_g_l_1_1_g_l.html#ac11543023557359792814b6fed3d83d4では static void OpenTK.Graphics.OpenGL.GL.BindVertexArray ( Int32 array ) [requires: v3.0 and ARB_vertex_array_object] Bind a vertex array object Parameters array Specifies the name of the vertex array to bind. とあります. いずれも、非常に簡単な説明だと思います。
Zuishin

2020/05/13 11:00

軽く読んでみたところ、GenBuffers でバッファを確保し、BindBuffer でバッファと BufferTarget を紐づけ、DeleteBuffers で解放するようですね。 DeleteBuffers を使わないと GenBuffers で確保されたバッファが解放されないのでメモリリークを起こすと思います。
tnisikawajp2010

2020/05/17 23:00

返信が遅れすみません。 フォローありがとうございます. 勉強してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問