Android圖形—OpenGL(五)

上一篇:/kf/201206/137160.html

形狀的外觀和折點

在OpenGL中,形狀的外觀是由三個或三維空間中更多的點來定義的一個表面。一個三個或更多的三維點(在OpenGL中叫做頂點)的集合有前面和後面之分。如何知道哪個面是前,哪個面是後呢?就要用折點或定義形狀中的點的方向來回答這個問題。

 

圖1.圖示顯示瞭變換成逆時針繪圖順序的坐標列表。

在這個例子中,三角形的點是按照它們被逆時針方向繪制的順序來定義的。這些繪圖用坐標的順序給圖形定義瞭折點的方向。默認情況下,在OpenGL中被逆時針繪制的那個面就是前面。圖1.所示的三角形定義,現在看到的是該圖形的正面(就像OpenGL所解釋的那樣),而其他的邊都是背面。

為什麼瞭解圖形的那個面是正面是重要的呢?這與OpenGL中被叫做面選取(Face Culling)的功能有關。面選取(Face Culling)是OpenGL環境的一個可選功能,它允許呈現管道在保存、內存和處理周期中忽略(不計算或繪制)對圖形背面的處理:

// enable face culling feature

gl.glEnable(GL10.GL_CULL_FACE);

// specify which faces to not draw

gl.glCullFace(GL10.GL_BACK);

如果試圖使用面選取(Face Culling)功能,但卻不知道那些邊是形狀的正面和反面,那麼OpenGL圖形看起來會有點薄,或者圖形根本就不會顯示。因此,要始終用逆時針的順序定義OpenGL圖形的坐標。

註意:也可以使用順時針的順序作為正面來設置OpenGL的環境,但是這需要更多的代碼,並且會給OpenGL開發者照成混亂,因此不要這麼做。

發佈留言