我一直在尝试创建一个 .obj 解析器来将从 Blender 导出的文件转换为 OpenGL 渲染代码。我遵循了与我正在做的类似的教程,但它是用 C++ 编写的,我几乎无法理解。我已经设法让解析器一切正常(我认为),但是当实际渲染到模型时,我很难创建与 C++ 代码等效的 java 代码。本教程使用这行代码:
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
是包含顶点数据的 float 组,vertexSize
是每个顶点的 float ,amountOfVertices
> 是不言自明的。如果您愿意,您可以将 amountOfVertices * vertexSize
与 vertices.length
切换,因为它们应该相等。
关于java - 将C++ OpenGL转换为Java(LWJGL), glBufferData();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216130/