OpenGL で描画するには、頂点の配列を指定してから、頂点の配列を結合してプリミティブの理にかなった順序にするインデックスを指定します。glDrawElements でこれを行うことができます。頂点を指定するには、glVertexPointer を使用できます。このパラメーターでは、パラメーター「ストライド」を指定できます。これは、配列内の連続する要素間のギャップです (つまり、他のデータを含む構造体に頂点を格納する場合、ストライドして他のデータを飛び越えます)。 )。
これは素晴らしいことですが、今はフェイス構造体でインデックスを指定するAssimpを使用しています。
struct aiFace {
unsigned int* indices;
unsigned int numIndices;
}
おそらく、これは異なるサイズの面を持つメッシュ (三角形と四角形を持つメッシュ) をサポートするためです。Assimp は、すべてのメッシュを三角測量するオプションを備えているので、すべての面が同じプリミティブであることを保証できます。
したがって、私が本当に欲しいのは、インデックスをまたぐことができるようにすることです。
gl/*...uh...*/ElementPointer(
3,
GL_UNSIGNED_INT,
sizeof(unsigned int) /* skip past the num_indices field*/,
&faces[0]);
しかし、私はそれを行う方法を理解できません。glDrawElements は、インデックスが連続した配列であることを前提としています。OpenGLでこれを行う方法はありますか?