我正在 Android 设备上使用 OpenGL ES 2.0。
我正在尝试让一个球体启动并运行和绘图。Currentley,我几乎有一个球体,但显然它做得非常非常错误。
在我的应用程序中,我保存了一个 Vector3 的列表,在此过程中我将其转换为 ByteBuffer,然后传递给 OpenGL。我知道我的代码没问题,因为我有一个立方体和四面体绘图 nicley。我更改的两个部分是: 确定顶点 绘制顶点。
这是有问题的代码片段。我究竟做错了什么?确定极坐标:
private void ConstructPositionVertices()
{
for (float latitutde = 0.0f; latitutde < (float)(Math.PI * 2.0f); latitutde += 0.1f)
{
for (float longitude = 0.0f; longitude < (float)(2.0f * Math.PI); longitude += 0.1f)
{
mPositionVertices.add(ConvertFromSphericalToCartesian(1.0f, latitutde, longitude));
}
}
}
从极坐标转换为笛卡尔坐标:
public static Vector3 ConvertFromSphericalToCartesian(float inLength, float inPhi, float inTheta)
{
float x = inLength * (float)(Math.sin(inPhi) * Math.cos(inTheta));
float y = inLength * (float)(Math.sin(inPhi) * Math.sin(inTheta));
float z = inLength * (float)Math.cos(inTheta);
Vector3 convertedVector = new Vector3(x, y, z);
return convertedVector;
}
画圆:
inGL.glDrawArrays(GL10.GL_TRIANGLES, 0, numVertices);
显然我省略了一些代码,但我很肯定我的错误在于这些片段的某个地方。我对这些点做的只是将它们传递给 OpenGL,然后调用 Triangles,它应该为我连接这些点.. 对吗?
编辑:图片可能很好!