OpenGL绘制一条线然后是一个正方形

时间:2016-03-05 17:54:15

标签: java opengl lwjgl game-loop

我在管理代码和想象一个好的设计时遇到了问题。我想做的只是首先绘制一条线,然后在渲染线之后,绘制正方形,使其与线部分重叠,然后继续这样做。

我创建了2个类LinesSquares。我在主类中设置并绑定了VAO和VBO。在我的行和正方形类中,我只将数据传递到此缓冲区,并在VertexAttribPointer方法中对GlDrawArraysdraw()进行适当的调用。

在主类中有一个主游戏循环无限运行,直到用户关闭窗口。现在我要做的是在draw()方法中调用LinesSquares的{​​{1}}方法。在调用此Update()之后,它仅交换缓冲区并轮询事件。基本上粗略的草图是......

Render()

但是有一个问题,因为更新处于循环中它会将行数据提供给缓冲区然后它将用方块1覆盖该数据。我想让它交替,即渲染线,然后是方形。因此我想在每个班级里面都有一面旗帜。在while(window_close != true) { update(); render(); } public void update() { GL11.glClearColor(0.2f,0.4f,0.3f, 1); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); lines.draw(); // object of Lines class squares.draw(); // object of Squares class } public void render() { swapbuffers(); } 方法提供数据之前,他们会检查哪一个已经渲染,然后相应地绘制,否则返回并且什么也不做。

此外,因为在draw()开始时背景被清除,我需要绘制线条,渲染它,然后绘制正方形并在清除背景之前渲染它。我知道我能做到

Update()

这没关系,但对于更大的项目来说,它会变得丑陋。我必须另外写while(window_close != true) { GL11.glClearColor(0.2f,0.4f,0.3f, 1); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); lines.draw(); render(); squares.draw(); }

0 个答案:

没有答案