gpt4 book ai didi

android - 使用 opengl-es 在 android 中绘制一个圆圈会生成一个正方形

转载 作者:搜寻专家 更新时间:2023-11-01 08:16:04 24 4
gpt4 key购买 nike

我正在尝试使用以下代码在 opengl-es 中绘制一个圆圈。它围绕一个圆圈创建许多点。如果我打印出顶点数组中的值,可以看出它们围绕一个圆形成点。

// Create verticies for a circle

points=40;
vertices = new float[(points+1)*3];

//CENTER OF CIRCLE
vertices[0]=0.0f;
vertices[1]=0.0f;
vertices[2]=0.0f;

for (int i = 3; i<(points+1)*3; i+=3){
double rad = deg2rad(i*360/points);
vertices[i] = (float) (Math.cos(rad));
vertices[i+1] = (float) (Math.sin(rad));
vertices[i+2] = 0;
}

// vertexBuffer is filled with verticies

以及在我的绘图函数中对 opengl 的调用:

// IN MY DRAWING FUNCTION:
gl.glPushMatrix();
gl.glTranslatef(x, y, 0);
gl.glScalef(size, size, 1.0f);
gl.glColor4f(1.0f,1.0f,1.0f, 1.0f);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, points/2);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glPopMatrix();

但是我从来没有在屏幕上画过一个圆圈,只有一个正方形。我很困惑,感谢任何帮助:)

最佳答案

有一件事看起来不对劲,就是 rad 的计算。尝试将其修改为类似以下内容:

double rad = deg2rad(i*360/(points*3));

您需要将它除以 points*3,因为 i 计数器在每次迭代时递增 3。您应该在每次迭代时打印出 rad 的值,并验证您获得的值是否在 0 到 2 * PI 之间递增

编辑:您可能还需要更改圆圈的方向(我不确定在我的头顶)。但如果上面没有呈现任何内容,请尝试反转它:

double rad = deg2rad(360.0 - i*360/(points*3));

此外,您似乎只渲染了 glDrawArrays 调用中的一半点。

关于android - 使用 opengl-es 在 android 中绘制一个圆圈会生成一个正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com