OpenGL ES iPhone - 繪製抗鋸齒線條



Answers

iOS 4.0開始,你有一個簡單的解決方案,現在可以使用Antialiasing為整個OpenGL ES場景添加幾行代碼。 (並且幾乎沒有性能損失,至少在SGX GPU上)。

有關代碼,請閱讀以下Apple Dev-Forum主題 。 還有一些示例圖片在我的博客上看起來如何。

Question

通常情況下,您會使用以下內容:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);

glLineWidth(2.0f);

glVertexPointer(2, GL_FLOAT, 0, points);
glEnableClientState(GL_VERTEX_ARRAY);

glDrawArrays(GL_LINE_STRIP, 0, num_points);

glDisableClientState(GL_VERTEX_ARRAY);

它在iPhone模擬器中看起來不錯,但在iPhone上,線條變得非常薄,沒有任何抗鋸齒。

你如何在iPhone上獲得AA?




圍繞此限制的一種方法是將線條細分為紋理三角形條帶(如此處所示)。




我非常清楚地記得我嘗試過這種方法,並且在iPhone上使用OpenGL沒有簡單的方法可以做到這一點。 您可以使用CGPaths和CGContextRef進行繪製,但這會慢得多。




Related