2017-03-16 50 views
2

glPolygonMode的文档仅将enum GL_FRONT_AND_BACK指定为可接受的第一个参数(face)。还有其他可以接受的枚举吗,比如只有前面,还是只有后面呢?什么是可以接受的glPolygonMode第一个参数值?

glPolygonMode(GLenum face, GLenum mode); 

我知道mode只支持GL_POINTGL_LINEGL_FILL,但它只是似乎非常奇怪的是,只有一个文档指定为faceGL_FRONT_AND_BACK,但它是用它作为参数的要求。

回答

4

glPolygonMode在传统的OpenGL上下文中接受了face的不同参数。如果你看一下Khronos man page for it for OpenGL 2.1,它说:

面部指定模式适用于多边形。对于面向前的多边形,必须为GL_FRONT,对于面向后的多边形,GL_BACK必须为GL_FRONT,对于面向后的多边形,必须为GL_FRONT,对于面向后的多边形,必须为GL_FRONT,对于面向后的多边形,必须为GL_FRONT_AND_BACK。

相反,在OpenGL 4 man page,它说:

面部指定模式适用于多边形。前后面的多边形必须为 GL_FRONT_AND_BACK。

在OpenGL 3.3规范中的'E2。已弃用和删除的功能“,它列出:

单独的多边形绘制模式 - PolygonMode面值FRONT和 BACK;无论哪个面 被光栅化,多边形总是以相同的模式绘制。

有可能的,face参数只是保留编译等价于不同的OpenGL上下文的目标,即使在现代的OpenGL,也真的只有一个值,现在是多余的。

+0

编译等价实际上并没有发生在我身上,但它被弃用的想法('GL_FRONT'和'GL_BACK')有。这看起来似乎并不合理。 –

相关问题