当前位置: 首页 > 知识库问答 >
问题:

JVM使用LWJGL与VBO崩溃

荣波
2023-03-14

每次我尝试运行我的 LWJGL 应用程序时,JVM 都会崩溃。这似乎与向我的 VBO 添加多个三角形有关。

这是我的初始化代码

float[] vertices = {
    -0.5f, 0.5f, 0f,
    -0.5f, -0.5f, 0f,
    0.5f, -0.5f, 0f,

    0.5f, -0.5f, 0f,
    0.5f, 0.5f, 0f,
    -0.5f, 0.5f, 0f
};

vertexCount = vertices.length / 3;

FloatBuffer verticesBuffer = BufferUtils.createFloatBuffer(vertices.length);
verticesBuffer.put(vertices);
verticesBuffer.flip();

vboId = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, verticesBuffer, GL_STATIC_DRAW);
glVertexPointer(vertexCount, GL_FLOAT, 0, 0L);

glBindBuffer(GL_ARRAY_BUFFER, 0);

这是我的渲染代码

glEnableClientState(GL_VERTEX_ARRAY);   
glDrawArrays(GL_TRIANGLES, 0, vertexCount);
glDisableClientState(GL_VERTEX_ARRAY);

当我删除顶点数组中的最后9个值时,它工作得很好,但是如果我保留这些值,或者添加更多的值,JVM就会崩溃。

共有1个答案

彭阳荣
2023-03-14

< code>glVertexPointer的第一个参数是每个顶点的坐标数,而不是顶点数。所以把这一行改成:

glVertexPointer(3, GL_FLOAT, 0, 0L);
 类似资料:
  • 经过大量的谷歌搜索,我在LWJGL渲染VBO立方体时遇到了这个问题。基本上,当我启用法线时,JVM会崩溃。这很可能与我在Plane.java中设置常态的方式有关。由于我仍在学习VBO,我似乎不知道如何解决这个问题。你能看一看,让我知道我可能在哪里出错了吗? Cube.java: 平面. java: 让我知道你们的想法。我已经在三台独立的计算机上测试了代码,每一台都有相同的结果。

  • 我目前一直在学习顶点数组和VBO的b/c,我目前了解到它比“立即”渲染更好/更快(比如使用glBegin),尽管这要容易得多。我做了一个小程序(实际上只是一个测试),它创建了一个按钮,当你将鼠标悬停在按钮上时,它会改变颜色,但是每当我启动它时,程序就会崩溃,并出现以下错误消息: }

  • 我是一个使用VBOs渲染数据的新手,当我试图绘制一个立方体时,我遇到了一个非常严重的错误。< br > 这使得程序崩溃。我注意到当我在代码中注释掉渲染方法时,错误消失了,但我似乎找不到错误的来源,因为我是VBO的新手。代码在下面,感谢任何帮助。

  • 我一直在尝试将我的游戏原型渲染器从即时模式测试实现转换为实际的VAO/VBO实现。VBO正在屏幕上渲染,但拒绝纹理。下面是显示问题的最简单测试类: 纹理绑定调用如下所示(其中包装=GL_REPEAT和过滤器=GL_NEAREST): 花了一个周末的时间在谷歌上搜索,却没有找到答案,我是不是做错了什么?我还测试了使用即时模式,它仍然使用纹理进行渲染。

  • 我最近发现了如何使用LWJGL和OpenGL渲染3D立方体,我非常激动,我渲染了2000个立方体,并有效地冻结了我的计算机。我听说过诸如显示列表和VBO之类的东西,但即使在谷歌搜索之后,我也不知道如何使用它们。 目前,我有 渲染我的立方体。调用只是渲染一个立方体 其中cap是顶部纹理,side是侧面纹理。 我真正需要的帮助是弄清楚如何使我的代码VBO和/或显示列表兼容,以提高性能。我还认为,如果可

  • 所以我正在为LWJGL代码编写我自己的字体/文本渲染器,但是它在运行时有这些奇怪的滞后尖峰,字母在恢复到以前的样子之前会随机变成另一个字母,有人知道我的代码有什么问题吗? getTextureError函数为 错误日志是 这也可能是我使用对象的方式,我正在创建变量以将对象存储在玩家实体中- 然后我在每次游戏更新时运行的实体的更新上执行此操作