設計が弱いため、数学ライブラリ全体と数学に関連するものを書き直さなければなりませんでした。代わりに、GLM を使用できることがわかりました。以前の質問に遭遇した場合、私はスケルトン アニメーションを扱ってきたので、大量の mat4、vec3、vec2 をアップロードする必要があります。これが私の以前の頂点構造体です:
struct Vertex {
Vec3 pos;
Vec3 normal;
Vec2 uv;
Vec4 boneindex;
Vec4 weightbias;
};
残念ながら、数学ライブラリが POD ではないことがわかり、構造体全体をアップロードしようとしたところ、奇妙な結果が得られました。次のように定義された最終的なボーン マトリックスについても同じです。
Mat4 bones[numBones];
それも一気にアップしてみました。
Vec3s、Vec2s、および Mat4s を glm::vec3、vec2、mat4 に置き換えて、Vertex 構造体全体 (頂点の数) を直接アップロードし、次を使用して各データのオフセットを設定するかどうか疑問に思います。
glBindBuffer(GL_ARRAY_BUFFER,everythingVBO);
glVertexAttribPointer(xx,xx,xx,xx, BUFFER_OFFSET(0)) // pos
glVertexAttribPointer(xx,xx,xx,xx, BUFFER_OFFSET(sizeof(glm::vec3)) // norm
..
..
same for matrix
glUniformMatrix4fv(xx, numBones, xx, glm::mat4 value)
.
意図したとおりに動作しますか? 私はすべてを書き直したくありません。今回は、別の失敗に直面したくないので、それが機能することを確認する必要があります。