我知道在 OpenGL ES 中绘制简单圆圈的三种主要方法由 iPhone 提供。它们都是基于一个简单的算法(下面是 VBO 版本)。
void circleBufferData(GLenum target, float radius, GLsizei count, GLenum usage) {
const int segments = count - 2;
const float coefficient = 2.0f * (float) M_PI / segments;
float *vertices = new float[2 * (segments + 2)];
vertices[0] = 0;
vertices[1] = 0;
for (int i = 0; i <= segments; ++i) {
float radians = i * coefficient;
float j = radius * cosf(radians);
float k = radius * sinf(radians);
vertices[(i + 1) * 2] = j;
vertices[(i + 1) * 2 + 1] = k;
}
glBufferData(target, sizeof(float) * 2 * (segments + 2), vertices, usage);
glVertexPointer(2, GL_FLOAT, 0, 0);
delete[] vertices;
}
我所知道的绘制简单圆的三种方法是使用应用程序持有的顶点数组中的 glDrawArray;使用顶点缓冲区中的 glDrawArray;并通过在初始化时绘制纹理并在请求渲染时绘制纹理。前两种方法我非常了解(尽管我还没有能够使抗锯齿工作)。最后一个选项涉及什么代码(作为一个整体,我对 OpenGL 很陌生,所以详细的解释会很有帮助)?哪个最有效?
我是一名优秀的程序员,十分优秀!