В настоящее время я пытаюсь отобразить мою модель, которую я экспортировал из блендера. Я проанализировал этот файл и имел 2 массива, один из которых содержит данные вершин, а другой содержит данные индекса. Мой метод bindData связывает данные вершин с шейдерной программой. Проблема, с которой я сталкиваюсь, заключается в том, что астероид не рисуется (или их рисуют, но не видят). При необходимости я могу предоставить больше кода или уточнить мою проблему.Модель не отображается android OpenGL ES 2.0
public Asteroid(){
vertexArray = new VertexArray(AsteroidFinal.VERTEX_ARRAY);
indexBuffer = ByteBuffer
.allocateDirect(AsteroidFinal.INDICES_ARRAY.length * 2)
.order(ByteOrder.nativeOrder())
.asShortBuffer()
.put((short) AsteroidFinal.INDICES_ARRAY.length);
indexBuffer.position(0);
}
public void bindData(ColorShaderProgram colorProgram){
vertexArray.setVertexAttribPointer(
0,
colorProgram.getPositionAttributeLocation(),
POSITION_COMPONENT_COUNT,
0);
}
public void draw(){
//glDrawArrays(GL_TRIANGLE_FAN, 0, vertexCount);
glDrawElements(GL_TRIANGLE_FAN, AsteroidFinal.INDICES_ARRAY.length, GL_UNSIGNED_SHORT, indexBuffer);
}
Вы уверены, что поверхность чертежа видна? например glClear() на красный дает вам красный экран? Можете ли вы рисовать другие фигуры, но только не в этом конкретном? (Нет ничего на экране, это довольно распространенная проблема, но есть много разных возможных причин.) – fadden
@fadden Мне удалось нарисовать квад с почти тем же кодом, за исключением выделения индексабаффер и изменения glDrawArrays в glDrawElements , – DorkMonstuh