Я пытаюсь создать базовую фигуру (шестиугольник), чтобы начать и изучить некоторые основы OpenGL на платформе Android, и у меня возникла небольшая проблема.
Я успешно создал заостренный шестиугольник, но когда я конвертирую его в плоский шестиугольник, он отображается неправильно. Вот код, который поможет вам разобраться в проблеме (вероятно, ее легко исправить..)
// 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);
Я пытаюсь создать базовую фигуру (шестиугольник), чтобы начать и изучить некоторые основы OpenGL на платформе Android, и у меня возникла небольшая проблема.
Я успешно создал заостренный шестиугольник, но когда я конвертирую его в плоский шестиугольник, он отображается неправильно. Вот код, который поможет вам разобраться в проблеме (вероятно, ее легко исправить..)
вершины/индексы
[code]//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 };
[code]// 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); [/code]