OpenGL рисует шестиугольник с вершинамиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 OpenGL рисует шестиугольник с вершинами

Сообщение Anonymous »

Я пытаюсь создать базовую фигуру (шестиугольник), чтобы начать и изучить некоторые основы OpenGL на платформе Android, и у меня возникла небольшая проблема.

Я успешно создал заостренный шестиугольник, но когда я конвертирую его в плоский шестиугольник, он отображается неправильно. Вот код, который поможет вам разобраться в проблеме (вероятно, ее легко исправить..)

вершины/индексы

Код: Выделить всё

//flat hexagon
private float verticesFlat[] = {
0.0f,   0.0f, 0.0f,    //center
-0.5f,   1.0f, 0.0f,    // left top
0.5f,   1.0f, 0.0f,    // right top
1.0f,   0.0f, 0.0f,    // right
0.5f,   1.0f, 0.0f,    // right bottom
-0.5f,  -1.0f, 0.0f,    // left bottom
-1.0f,   0.0f, 0.0f,     // left
};

private short[] indices = { 0, 1, 2, 3, 4, 5, 6, 1 };
стандартные буферы вершин/индексов.

Код: Выделить всё

// a float is 4 bytes, therefore we multiply the number if
// vertices with 4.
ByteBuffer vbb = ByteBuffer.allocateDirect(verticesFlat.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(verticesFlat);
vertexBuffer.position(0);

// short is 2 bytes, therefore we multiply the number if
// vertices with 2.
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
indexBuffer = ibb.asShortBuffer();
indexBuffer.put(indices);
indexBuffer.position(0);
OnDraw (GL10 gl):

Код: Выделить всё

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();

GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glDrawElements(GL10.GL_TRIANGLE_FAN, indices.length, GL10.GL_UNSIGNED_SHORT, indexBuffer);

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
Результат, который я получаю, показан на изображении ниже:

Изображение


Подробнее здесь: https://stackoverflow.com/questions/877 ... h-vertices
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»