OpenGL状态重置

时间:2017-05-07 08:26:34

标签: java opengl graphics processing

我有一些关于AWT和处理的问题(他们不建议这样做),我无法在大多数时间获得明确的开始并且处理绘制循环停止工作,问题是多种多样但它们似乎主要与图形有关矩阵深度。

看看这个问题在起始条件下是如何看起来的(如果它启动它不会在以后失败,或者它不会启动)。我想知道是否有某种方法可以完全处理图形状态,即使以全屏运行应用程序为代价。

所以问题主要在于,我如何(如果可能的话)在语法上获得新的图形开始?当然,任何其他解决方案或输入都是受欢迎的,它可以用于处理自身。

2 个答案:

答案 0 :(得分:2)

无法重置OpenGL上下文执行默认状态。即使有,这也无法解决您的问题,因为您的问题似乎源于这样一个事实:当您的代码完成时,它不会在进入时发现它的状态下留下OpenGL上下文。这肯定不是默认状态。

然而,可能的是,您只是为您的代码创建OpenGL上下文并暂时切换到那个,做你的事情,然后回到原来的。 Windows不依赖于OpenGL上下文,OpenGL上下文与Windows无关;它可以根据需要进行选择和混合(只要像素格式兼容,它们适用于大多数窗口/上下文设置)。

如果您希望/需要访问由Processing创建的OpenGL对象(纹理,缓冲区对象),您可以共享上下文数据(不共享状态,因此您是安全的)。只是不要修改或彻底删除代码不拥有的东西。

你要遇到的一个问题是使用JOGL / AWT做所有这些。快速浏览一下库参考,我发现没有明显的方法来确定当前活动的OpenGL上下文绑定到哪个 drawable ;虽然很容易获得当前的上下文。然而,JOGL本身是开源的,所以如果没有现成的方法,那么实现它应该很容易(对于库来说也是一个有价值的补充)。

答案 1 :(得分:0)

没有标准的OpenGL函数可以执行此操作,但是您可以创建自己的函数来将所有绑定,选项和功能重置为OpenGL标准中定义的默认值。但是,正如 @datenwolf 在他的回答中所说,也许在上下文之间进行切换更适合您的问题。选择最适合您的用例的解决方案。