Как загрузить сетку в Android OpenGL

Как загрузить Mesh (3dmax) в Android OpenGL в ByteBuffer?

пример:

float triangleCoords[] = {
    -0.5f, -0.25f      , 0, // 0,
 0.5f, -0.25f      , 0, // 1,
 0.0f, 0.559016994f, 0  // 2,
};

ByteBuffer vbb = ByteBuffer.allocateDirect(triangleCoords.length * _4_FLOAT_LENGTH);
vbb.order(ByteOrder.nativeOrder());
triangleVB = vbb.asFloatBuffer();
triangleVB.put(triangleCoords);
triangleVB.position(0);

как загрузить сетку, например, массив или Coords или библиотеку для этой работы

1 ответ

Решение

В основном это сводится к загрузке данных из файла в ваши структуры данных (например, массив вершин из вашего фрагмента кода) и предоставлению их в OpenGL для рендеринга (в вашем случае glDrawArrays, например). Обычно это одна и та же процедура, независимо от того, работаете ли вы с Android, Windows, Plan9, OpenGL или Direct3D. Имеют значение только детали реализации, поэтому этот вопрос немного широк.

Вы можете посмотреть это описание формата файла 3DS (подсказка в вашем вопросе), в котором также есть ссылки на учебные пособия по загрузке этих файлов. Несмотря на то, что формат 3DS довольно прост для чтения в двоичном формате, для начала вы также можете взглянуть на формат Wavefront OBJ, простой формат файла ASCII, в который может экспортироваться почти любое программное обеспечение для моделирования (но это должно также относиться и к 3DS). Загрузка этих форматов в кучу простых вершинных массивов должна сводиться к нескольким строкам кода.

Это должно начать вас. Если вы столкнулись с какими-либо конкретными проблемами при реализации этих функций загрузки сетки на вашей конкретной платформе, не стесняйтесь задавать более конкретный вопрос.

Другие вопросы по тегам