2

私がやりたいのは、OpenGL で (大きな) 地形を描くことです。だから私は頂点のセットを持っています.VRAMの頂点バッファオブジェクトに保存する256 x 256としましょう。それらを適切に三角測量したので、顔のインデックス バッファーを取得しました。

// vertexes
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBufferId);
glVertexPointer(3, GL_FLOAT, 0, 0);
// textures
glBindBufferARB(GL_ARRAY_BUFFER_ARB, texCoordBufferId);
glTexCoordPointer(2, GL_FLOAT, 0, 0);
// indexes
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, indexBufferId);
// draw it
glDrawRangeElements(GL11.TRIANGLES, 0, size - 1, size, GL_UNSIGNED_INT, 0);

また、各三角形に適用する必要がある正方形のテクスチャもロードしました。だから私はテクスチャ座標に問題があります:

各頂点は 4 つの三角形に含まれています。つまり、4 つのテクスチャ座標が必要です。ただし、glDrawRangeElements() には頂点と同じ数のテクスチャ座標が必要です。

したがって、VBOでこれを行う方法がわかりません。私の問題を解決するためのより良いコンセプトがあるか、良いアイデアが欠けているだけかもしれません。

前もって感謝します。

4

2 に答える 2

3

テクスチャが各クワッドで繰り返される(またはミラーリングされる)必要がある場合は、配列内の(x、y)位置の数に一致するテクスチャ座標を使用するのが最善の方法です。たとえば、頂点の最初の行では、次のテクスチャ座標を使用します:(0.0、0.0)、(1.0、0.0)、(2.0、0.0)...(255.0、0.0)。

于 2008-12-18T22:18:01.373 に答える
0

テクスチャをシームレスに並べて表示したい場合は、頂点ごとに適切なテクスチャ座標を計算し、それらを頂点と同じように渡すだけです。

于 2008-12-29T16:46:00.253 に答える