java - 将C++ OpenGL转换为Java(LWJGL), glBufferData();

标签 java c++ opengl lwjgl .obj

我一直在尝试创建一个 .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 * vertexSizevertices.length 切换,因为它们应该相等。

关于java - 将C++ OpenGL转换为Java(LWJGL), glBufferData();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216130/

相关文章:

java - 如何在 servlet 响应中添加多个 "Set-Cookie" header ?

c++ - 如何在 QOpenGLWidget 中渲染三角形?

C++ 风格的 vector - 指针数组还是数组?

c++ - std::function 参数类型

c++ - boolean 值对位域的优势

c++ - OpenGL:如何获取 GPU 使用百分比?

Vertexbuffer 中的 OpenGL 数组结构数据布局可能吗?

java - 使用 DataJpaTest spring boot 2.1.0 更新失败

java - 从另一个类访问组件

java - 在 ImagePanel 上绘制形状