Я возился с 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, и никогда раньше не использовал этот класс.
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
если хочешь как они должны быть равны.