JOGL渲染在显示之外(GLAutoDrawable drawable)

时间:2014-01-13 15:23:43

标签: opengl jogl

出于我的目的,我想清除画布的绘图表面并获取当前的GL2对象,将其保存到管理包装器中,并在从画布{{1}返回后一步后使用它方法(反过来调用display()方法)。看来,从display()方法返回之后,会发生导致GL对象出现问题的事情,比如当我想通过调用display(GLAutoDrawable drawable)来获取可用的textureID时,我收到glGenBuffers(1, buffer) - 而不是用于加载纹理的有效textureID。

有没有办法让GL对象在显示方法之外工作? (0不会改变任何事情......)

编辑:在修补之后,似乎对glGenTextures的调用实际上什么都没有 - 当我在显示方法中创建一个纹理然后从显示的调用之外调用它时,我得到了相同的textureID缓冲之前 - 所以调用不会改变缓冲区中的值 - 同样gl.getContext().makeCurrent()返回0 ...

Edit2:Java: openGL: JOGL: What happens behind the scenes when I call the display() method?包含该问题,但没有回答如何执行此操作。看到一步一步的方法可能会很有趣,如果将代码放在某处,可能不需要修改它......

1 个答案:

答案 0 :(得分:0)

而是使用GLAutoDrawable.invoke(),它比尝试将GLContext存储在GLAutoDrawable中并在其上调用makeCurrent()更安全。无论如何,你试图打败GLEventListener的主要目的,它既无用又危险。最后,获得JOGL建议的最佳地点是官方的JogAmp论坛,因为我们无处不在: http://forum.jogamp.org