Преобразование C ++ OpenGl в Java (LWJGL), glBufferData ();

Я возился с LWJGL, пытаясь создать парсер .obj, который будет конвертировать файлы, экспортированные из blender, в код рендеринга OpenGL. Я следовал учебному пособию, похожему на то, что я делал, но оно было написано на c ++, что я с трудом понимаю. Мне удалось заставить все работать с синтаксическим анализатором (я думаю), но когда приходит время на самом деле рендерить в модель, мне трудно создать Java-эквивалент кода C ++. Учебник использует эту строку кода:

glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);

Затем (очевидно) он рисует массив. Я почти уверен, что мне нужно конвертировать Vecotor3f из моего списка (вершины) во FloatBuffer, и мне не нужен второй параметр (потому что java будет обрабатывать размер). Я, однако, понятия не имею, как это сделать, я все еще нахожу свой путь вокруг Java, и никогда раньше не использовал этот класс.

1

Решение

FloatBuffer vertexData = BufferUtils.createFloatBuffer(amountOfVertices * vertexSize);
vertexData.put(vertices);
vertexData.flip();

glBufferData(GL_ARRAY_BUFFER, vertexData, GL_STATIC_DRAW);

Это эквивалентный код Java, где vertices массив с плавающей точкой, содержащий ваши данные вершин, vertexSize это число поплавков на вершину и amountOfVertices говорит само за себя. Вы могли бы переключиться amountOfVertices * vertexSize с vertices.length если хочешь как они должны быть равны.

3

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector