2017-03-16 87 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')有。這看起來似乎並不合理。 –