私はOpenGLを使ってモデルの新しいデータをグラフィックスカードにロードするプログラムに取り組んでいます。そして、それをレンダリングするように切り替えてから、古いデータを削除して他の用途のためのスペースを増やします。glBufferDataの作成/解放バッファの呼び出しはありますか?
メモリのスラッシングにつながる可能性があるので、私の理解からは、バッファを作成/解放してはいけません。
glBufferDataを頻繁に呼び出してグラフィックカードに新しいデータを追加するのは悪いですか?これはバッファの作成/解放としてカウントされますか?
すでにglBufferDataでバッファを割り当てていて、データの更新/置換が必要な場合は、[glBufferSubData](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml)を使用できます。 /glBufferSubData.xml)を使用して、新しい割り当てが行われないようにしながらデータを変更します。 –
glBufferSubDataを使用すると、データの更新が部分的になることがあり、シャドウコピーを作成する必要があります。オーファンが実行されると、コピーステップをスキップできます。 – datenwolf
glBufferSubDataを正しく動作させることができません。初期化時にこのコードを呼び出して初期バッファを作成します: 'glBindBuffer(GL_ARRAY_BUFFER、vbo [0]); \t glBufferData(GL_ARRAY_BUFFER、スペース*はsizeof(フロート)、nullptr、GL_DYNAMIC_DRAW); ' 頂点データが設定されている場合、私は次の行を使用します。 ' glBufferData(GL_ARRAY_BUFFER、カウント*のはsizeof(フロート)、頂点を、 GL_DYNAMIC_DRAW); ' しかし) ' glBufferSubData(GL_ARRAY_BUFFER、NULL、カウント*はsizeof(フロート)、(定数GLvoid *)頂点のためにそれをスワップアウト; ' モデルはもはやレンダリングしないようにします。私が間違っていることは何か考えていますか? –