Sup*_*oll -1 java opengl lwjgl
我尝试使用 lwjgl 来创建游戏。我做错了什么,并在下面出错。我该如何解决?它实际上意味着什么?
Exception in thread "main" org.lwjgl.opengl.OpenGLException: Invalid operation (1282)
at org.lwjgl.opengl.Util.checkGLError(Util.java:59)
at org.lwjgl.opengl.GL20.glUniform1f(GL20.java:338)
at com.base.engine.Shader.setUniformf(Shader.java:119)
at com.base.engine.Game.update(Game.java:63)
at com.base.engine.MainComponent.run(MainComponent.java:85)
at com.base.engine.MainComponent.start(MainComponent.java:38)
at com.base.engine.MainComponent.main(MainComponent.java:131)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
如果没有当前程序对象,则生成 GL_INVALID_OPERATION。
您在以下render()方法中绑定您的着色器程序Game:
public void render()
{
shader.bind();
mesh.draw();
}
Run Code Online (Sandbox Code Playgroud)
但是,如MainComponent教程 11中的课程所示:
private void run()
{
// ...
while(unprocessedTime > frameTime)
{
// ...
game.update();
// ...
}
if(render)
{
render();
frames++;
}
// ...
}
private void render()
{
RenderUtil.clearScreen();
game.render();
Window.render();
}
Run Code Online (Sandbox Code Playgroud)
Heregame.update()在之前被调用render()(因此被调用game.render())。
因为着色器程序只在 中绑定game.render(),所以在第一次调用时game.update()没有程序绑定,这意味着GL_INVALID_OPERATION抛出。
这不是真正的问题,因为从程序的第二帧开始,所有内容都将完美运行。但是,您可能打开了调试模式,这意味着 LWJGL 不会默默地忽略 OpenGL 错误,而是抛出异常。
因此,您可以关闭调试模式,或者,我建议您在Game构造函数的末尾而不是每一帧绑定一次着色器程序。只要您只有一个着色器程序,它就可以完美运行。
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |