私はその中の3種類のデータを一つのバッファを使用する方法を理解する問題を抱えている、私は私のヴェール、テキスト、カラーデータについては、以下の構造を有する:VBOでstrideパラメータを使用するにはどうすればよいですか?
struct xyzf {
float x, y, z;
};
struct xyf {
float x, y;
};
struct vertype {
xyzf points[4];
};
struct textype {
xyf points[4];
};
struct coltype {
GLuint points[4];
};
struct buftype {
vertype vertex;
textype texcoord;
coltype color;
};
その後、私は(しよう)以下でそれを使用します(私にはほとんど意味があります)方法:
glBindBufferARB(GL_ARRAY_BUFFER, mybufid);
glVertexPointer(3, GL_FLOAT, sizeof(buftype), 0);
glTexCoordPointer(2, GL_FLOAT, sizeof(buftype), (GLvoid *)sizeof(vertype));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(buftype), (GLvoid *)(sizeof(vertype)+sizeof(textype)));
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_QUADS, 0, indices);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER, 0); // unbind
しかし、それは失敗し、その私はすべてをゼロにストライドとポインタを設定することで得たものよりも何かをレンダリングします。私がそれをすると、頂点データは正しくレンダリングされますが、テキスト/カラーは正しくありません。
glVertexPointer()などの最後のパラメータには、& data [0] .vertexを使用できません。これは、VBOを使用して以来、データがなくなっているため、そのメソッドは頂点配列でのみ機能します。
また、glDrawArrays()のカウント値がどのように機能するかわかりませんが、インデックスであると言うドキュメントを読んでいるので、クワッドには4が正しく表示されますか?しかし、4倍のカウントを4倍にすると、それは私の頂点の半分をレンダリングするだけです。何が起こっていますか? (私が8で掛け合わせるとすべてがレンダリングされます)
いまいましいあなたは正しいです、そして今私は前にこれと同じ問題を抱えていた覚えています!これはまた、私が持っていたインデックスの問題を解決するようです。 – Rookie