如何在OpenGL ES 2.0 Android中绘制基本圈子

前端之家收集整理的这篇文章主要介绍了如何在OpenGL ES 2.0 Android中绘制基本圈子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 OpenGL ES 2中是新的,我已经阅读了许多有关如何在Android上的OpenGL ES 2中绘制一个圈子的主题.基于 Drawing Shapesthis code found on gamedev.net,我可以绘制三角形和三角形,但我仍然不知道如何画一个圆.我现在有三种方法来画一个圆圈:

>在圆中生成顶点并使用glDrawArray(GL_LINES,…).根据您生成的顶点数量,可以产生一个不错的结果.
>使用圆形的预生成纹理(具有Alpha透明度)并将其映射到四边形上.这将导致非常光滑的图形,并允许一个“圆”,但它不会那么灵活:即使使用mipmap,你会希望你的纹理与渲染四边形的大小相同.
>使用片段着色器.

但是如何实现呢?

解决方法

如果要为圆形创建几何,请执行以下操作:
int vertexCount = 30;
float radius = 1.0f;
float center_x = 0.0f;
float center_y = 0.0f;

// Create a buffer for vertex data
float buffer[] = new float[vertexCount*2]; // (x,y) for each vertex
int idx = 0;

// Center vertex for triangle fan
buffer[idx++] = center_x;
buffer[idx++] = center_y;

// Outer vertices of the circle
int outerVertexCount = vertexCount-1;

for (int i = 0; i < outerVertexCount; ++i){
    float percent = (i / (float) (outerVertexCount-1));
    float rad = percent * 2*Math.PI;

    //Vertex position
    float outer_x = center_x + radius * cos(rad);
    float outer_y = center_y + radius * sin(rad);

    buffer[idx++] = outer_x;
    buffer[idx++] = outer_y;
}

//Create VBO from buffer with glBufferData()

然后,您可以使用glDrawArrays()绘制为:

> GL_LINE_LOOP(仅限轮廓)或
> GL_TRIANGLE_FAN(填充形状)

.

// Draw circle contours (skip center vertex at start of the buffer)
glDrawArrays(GL_LINE_LOOP,2,outerVertexCount);

// Draw circle as a filled shape
glDrawArrays(GL_TRIANGLE_FAN,vertexCount);

猜你在找的Android相关文章