gpt4 book ai didi

android - Android 中的 OpenglES 椭圆

转载 作者:行者123 更新时间:2023-11-29 14:07:37 26 4
gpt4 key购买 nike

我想在 android 中画一个椭圆/圆,但我无法让它显示出来。我可以使用低效的循环和 glVertex 在 C 的 OpenGL 中(而不是在 android 中)做得很好,但是 OpenGL ES 看起来足够不同以至于我有点迷路。我的椭圆类在下面。我希望能够在构造函数中定义所有顶点并使用 draw() 方法绘制它们。

public class Ellipse {
private float _vertices[];
private FloatBuffer _vertex_buffer;
private int _segments;

public Ellipse(int segments, float width, float height) {
_vertices = new float[segments*2];
_segments = segments;

int count = 0;
for (float i = 0; i < 360.0f; i += (360.0f/_segments)) {
_vertices[count++] = (float)Math.cos(Math.PI/180.0f)*width;
_vertices[count++] = (float)Math.sin(Math.PI/180.0f)*height;
}

ByteBuffer vbb = ByteBuffer.allocateDirect(_vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
_vertex_buffer = vbb.asFloatBuffer();
_vertex_buffer.put(_vertices);
_vertex_buffer.position(0);
}

public void draw(GL10 gl) {
gl.glFrontFace(GL10.GL_CW);

gl.glVertexPointer(2, gl.GL_FLOAT, 0, _vertex_buffer);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

gl.glDrawArrays(gl.GL_LINE_LOOP, 0, _segments);

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
}

最佳答案

我发现了问题。我在点的 x/y 计算中省略了 * i。

_vertices[count++] = (float)Math.cos(Math.PI/180.0f * i)*width;
_vertices[count++] = (float)Math.sin(Math.PI/180.0f * i)*height;

关于android - Android 中的 OpenglES 椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5844531/

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