在opengl中顺利不起作用

时间:2011-08-15 05:23:39

标签: iphone opengl-es smooth

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);

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

1 个答案:

答案 0 :(得分:1)

在这种情况下,您似乎没有正确理解 smooth 一词。

首先,GL_LINE_SMOOTH_HINT仅影响线条。此外,我引用了the documentation

其次,glShadeModel()设置下一个基元应该具有的着色类型。 GL_SMOOTH将在每个结果像素片段中插入顶点的颜色。但是,GL_FLAT只获取一个顶点的计算颜色,并自动将其分配给基元所代表的每个像素片段。此外,我引用了the documentation

您对光滑的理解并不像您认为的那样适用于三角形。如果确实需要平滑模型,则应增加模型中多边形的数量。