2
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_SRC_COLOR);
glShadeModel(GL_SMOOTH);    // Разрешить плавное сглаживание
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);   // Черный фон
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); // Сглаживание линий
glEnable(GL_BLEND);         // Разрешить смешивание
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

//set the format and location for verticies
glVertexPointer(3, GL_FLOAT, 0, vertices);

glNormalPointer(GL_FLOAT, 0, normals);

glCullFace(GL_FRONT);
glDepthFunc(GL_LEQUAL);

//draw the triangles
glDrawArrays(GL_TRIANGLES, 0, numberOfVertices);

这是我的代码,现在我不知道为什么代码不起作用。我将非常感谢您的建议。

4

1 回答 1

1

在这种情况下,您似乎对平滑一词没有正确的理解。

首先,GL_LINE_SMOOTH_HINT唯一影响线路。此外,我参考了文档

其次,glShadeModel()设置下一个基元应该具有的着色类型。GL_SMOOTH将在每个生成的像素片段中插入顶点的颜色。GL_FLAT但是,只取一个顶点的一种计算颜色,并自动将其分配给您的图元表示的每个像素片段。此外,我参考了文档

您对平滑的理解并不像您想象的那样适用于三角形。如果你真的想要一个平滑的模型,你应该增加模型中多边形的数量。

于 2011-08-15T15:37:59.267 回答