異なる頂点属性を異なる頂点バッファに格納することは可能ですか?このような異なるVBOに異なる頂点属性を格納する
私はこれまでのところ、この
float data[] =
{
//position
v1x, v1y, v1z,
v2x, v2y, v2z,
...
vnx, vny, vnz,
//color
c1r, c1g, c1b,
c2r, c2g, c2b,
...
cnr, cng, cnb,
};
GLuint buffname;
glGenBuffers(1, &buffname);
glBindBuffer(GL_ARRAY_BUFFER, buffname);
glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
ような何かを行うと描画が行われる見てきたすべての例何か:
glBindBuffer(GL_ARRAY_BUFFER, buffname);
glEnableVertexAttrib(position_location);
glEnableVertexAttrib(color_location);
glVertexAttribPointer(position_location, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(color_location, 3, GL_FLOAT, GL_FALSE, 0, (void*)(3*n));
glDrawArrays(GL_TRIANGLES, 0, n/3);
glDisableVertexAttrib(position_location);
glDisableVertexAttrib(color_location);
glBindBuffer(GL_ARRAY_BUFFER, 0);
は、位置データを格納することが不可能であり、異なるVBOのカラーデータ?問題は、一度に2つのバッファをバインドできないため、これがどのように機能するのか分かりません。
シンプルだが非効率的な解決策がある場合、私は初級の学習状態にあるので、より複雑で効率的な解決策よりも優先したいと思うし、あまり複雑にしたくない。
また、私が聞いていることが可能なら、いいアイデアかどうか?明確にするために
:私は別のVBOの中に異なる属性を保存することができる方法を理解します。後でどのように描くのか分かりません。
ありがとうございます!わかりました!突然もっと多くのことが明らかになった:)))私の2番目の質問はどうですか?それは一般的に良いアイデアかどうか? –
@Armen:私の編集を参照してください。 –
私はそれをもっとはっきりと見ています。どうもありがとう。したがって、単純なケースではNicolが述べた最初のアプローチを使用する必要があり、必要な場合は別のVBOを使用する必要があります。はるかに明確な感謝! –