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);
这是我的代码,现在我不知道为什么代码不起作用。我会非常感谢你的建议。
答案 0 :(得分:1)
在这种情况下,您似乎没有正确理解 smooth 一词。
首先,GL_LINE_SMOOTH_HINT
仅影响线条。此外,我引用了the documentation。
其次,glShadeModel()
设置下一个基元应该具有的着色类型。 GL_SMOOTH
将在每个结果像素片段中插入顶点的颜色。但是,GL_FLAT
只获取一个顶点的计算颜色,并自动将其分配给基元所代表的每个像素片段。此外,我引用了the documentation。
您对光滑的理解并不像您认为的那样适用于三角形。如果确实需要平滑模型,则应增加模型中多边形的数量。