Android デバイスで OpenGL ES 2.0 を使用しています。
球体を起動して実行し、描画しようとしています。現在、私はほぼ球体を持っていますが、明らかにそれは非常に間違っています.
私のアプリでは、途中で ByteBuffer に変換して OpenGL に渡す Vector3 のリストを保持しています。Cube と Tetrahedron で nicley を描画しているので、コードが問題ないことはわかっています。私が変更した 2 つの部分は次のとおりです。 頂点の決定 頂点の描画。
問題のコード スニペットを次に示します。私は何を間違っていますか?極座標の決定:
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 を呼び出す以外に、ポイントを使用することはありません。
編集:写真がいいかもしれません!