3D エンジンでレンダリングしたいすべてのオブジェクトをループしているときに、呼び出そうとするとエラーが発生します。
glDrawArrays(mesh->primitiveType, 0, mesh->vertexCount);
位置 0x0000000 から読み取ろうとするため、明らかにメッシュ->頂点バッファー インデックスにバインドされたポインターはゼロを指します。これはすべて、RenderableObject クラス内で発生します。このクラスのインスタンスにはメッシュがバインドされており、このメッシュには VertexArray にリンクするインデックスが含まれています。しかしどうやら
glBindBuffer(GL_ARRAY_BUFFER, mesh->vertexBuffer);
失敗しています。
奇妙なことに、私の Mac や他のさまざまな Windows コンピューターでは動作しますが、この (Windows) コンピューターでは動作しません。私はテストしているので、すべての 3D モデルを削除しましたが、問題の原因はプリミティブであることがわかりました。どういうわけか、MSVC++ コンパイラが私のコードを「最適化」し、その後すべてを削除しました。
glGenBuffers(1, &CubeMesh.vertexBuffer);
それがおそらく何も縛られなかった理由だと思いました。リンカー/コンパイラの最適化を無効にすると、すべてのブレークポイントがヒットすることがわかりましたが、それでも同じ例外が発生し、なぜ機能しないのかまったくわかりません。
プロジェクトのソース全体は @ https://github.com/Wrap/TwinGame/tree/master/srcで見つけることができます。問題が Primitives.cpp および/または RenderableObject.cpp にあることがわかる限り、 (具体的には RenderableObject::Draw(); メソッド) ファイル。保護されているものを読み取ろうとしていますか? LoadPrimitives(); の何が問題になっていますか? 方法?
これを読んでくれてありがとう。