レンダリング機能を動作させようとしています。頂点配列を使用しています。これが私の頂点構造です。
struct Vertex
{
float x, y, z; // The x, y and z floating point values
float u, v; // The u - v texture coordinates
float padding[3]; // needs to be multiple of 32
};
これが私のレンダリングコードです:
// Render the mesh
void WLD::render(GLuint* textures, long curRegion, CFrustum cfrustum)
{
int num = 0;
// Set up my indices
GLuint indicies[3];
// Cycle through the PVS
while(num < regions[curRegion].visibility.size())
{
int i = regions[curRegion].visibility[num];
if(!regions[i].dead && regions[i].meshptr != NULL)
{
if(cfrustum.BoxInFrustum(regions[i].meshptr->min[0], regions[i].meshptr->min[2], regions[i].meshptr->min[1], regions[i].meshptr->max[0], regions[i].meshptr->max[2], regions[i].meshptr->max[1]))
{
// Cycle through every polygon in the mesh and render it
for(int j = 0; j < regions[i].meshptr->polygonCount; j++)
{
// Assign the index for the polygon to the index in the huge vertex array
indicies[0] = regions[i].meshptr->poly[j].vertIndex[0];
indicies[1] = regions[i].meshptr->poly[j].vertIndex[1];
indicies[2] = regions[i].meshptr->poly[j].vertIndex[2];
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(Vertex), &verticies[0].x);
// Texture index
int tex = regions[i].meshptr->poly[j].tex;
// Need to bind this to the polygon I render.
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &verticies[0].u);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, indicies);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
}
}
num++;
}
}
引数の1つである、GLuint *テクスチャには、ロードされたすべてのテクスチャが含まれています。したがって、line int tex = region [i] .meshptr-> poly[j].tex;によって返される値。この特定のポリゴンのテクスチャのインデックスです。レンダリングするときに、それを各ポリゴンにバインドするにはどうすればよいですか?ご不明な点がございましたら、お気軽にお問い合わせください。
glClientActiveTexture()を使用する必要があることはわかっていますが、1つは未定義であり、正しいヘッダーが見つからないことを示しています。2つは、どのように使用されているかわかりません。良い例は見つかりませんでした。では、ポリゴンがテクスチャインデックス4を参照しているとしたら、glClientActiveTextureでレンダリングするときに、ポリゴンにバインドするにはどうすればよいですか。