gpt4 book ai didi

c++ - 在 OpenGL 中渲染网格多边形 - 非常慢

转载 作者:太空狗 更新时间:2023-10-29 20:06:38 24 4
gpt4 key购买 nike

我最近从中间模式切换到新的渲染过程。一定有什么我不明白的地方。我认为这与指数有关。

这是我的图表:Region->Mesh->Polygon Array->3 vertex indices,它引用了顶点的主列表。

这是我的渲染代码:

// Render the mesh
void WLD::render(GLuint* textures, long curRegion, CFrustum cfrustum)
{

int num = 0;

// Set up rendering states
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

// Set up my indices
GLuint indices[3];

// Cycle through the PVS
while(num < regions[curRegion].visibility.size())
{
int i = regions[curRegion].visibility[num];

// Make sure the region is not "dead"
if(!regions[i].dead && regions[i].meshptr != NULL)
{
// Check to see if the mesh is in the frustum
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
// This I think, is redundant
indices[0] = regions[i].meshptr->poly[j].vertIndex[0];
indices[1] = regions[i].meshptr->poly[j].vertIndex[1];
indices[2] = regions[i].meshptr->poly[j].vertIndex[2];

// Enable texturing and bind the appropriate texture
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textures[regions[i].meshptr->poly[j].tex]);

glVertexPointer(3, GL_FLOAT, sizeof(Vertex), &vertices[0].x);

glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &vertices[0].u);

// Draw
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices);
}
}
}
num++;
}

// End of rendering - disable states
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}

抱歉,如果我遗漏了什么。我真的很感谢反馈和帮助。我什至会考虑付钱给擅长 OpenGL 和优化的人来帮助我解决这个问题。

最佳答案

如果您一次只渲染 3 个顶点,则使用数组渲染毫无意义。这个想法是通过一次调用发送数千。也就是说,您只需一次调用即可渲染单个“多边形阵列”或“网格”。

关于c++ - 在 OpenGL 中渲染网格多边形 - 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6991453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com