Я работаю с OpenGL ES 2.0 на устройстве Android.
Я пытаюсь запустить сферу и рисовать. В настоящее время у меня почти есть сфера, но очевидно, что она делается очень, очень неправильно.
В моем приложении я держу список Vector3, который по пути конвертирую в ByteBuffer и передаю в OpenGL. Я знаю, что мой код в порядке, так как у меня есть рисунок куба и тетраэдра. Какие две части я изменил: Определение вершин Рисование вершин.
Вот фрагменты кода, о которых идет речь. Что я делаю неправильно? Определение полярных координат:
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, который должен соединить точки для меня... правильно?
РЕДАКТИРОВАТЬ: Картинка может быть хорошей!