私の目標は、さまざまな色と可能な場合は幅の異なるVBOを使用してセグメントのリストをレンダリングすることです。各頂点は、によって定義さVBOを使用して異なる幅の色付き線を描画しますか?
:
class Vector2f {
public:
float x, y;
};
セグメントのリストは、セグメントを定義する頂点の対で構成されています。
は、その後、私はVBOを初期化します。
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vector2f) * segments.size(), &segments[0], GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
そして私は使って描く:
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, sizeof(Vector2f), (void*)(sizeof(float) * 0));
glColor3f(0.0f, 1.0f, 0.0f);
glDrawArrays(GL_LINES, 0, segments.size());
glDisableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, 0);
私の例では、私は、各セグメントに色を与えたいです。色は以前に定義されており、3つのオプションから1つしか選択できません。 どうすればいいですか?そして、それらを全部繰り返すのではなく、色のインデックスを使って最適化できますか?
もしそうなら、どうですか?
また、個々のセグメントの幅を定義することは可能ですか?
インデックスを使用してカラー配列を最適化できないのですか? – gdf31
@ gdf31:そうではありませんが、OpenGLでは各属性ごとに別々のインデックス配列は使用できません。 – genpfault
@ gdf31:デスクトップをターゲットにしているのなら正直OpenGLの頂点データはほんの一握りのテクスチャに比べて微妙です。 – genpfault