2017-05-07 183 views
-2

我有关于AWT和处理(他们不推荐)的一些问题,大部分时间我都无法获得明确的开始,处理绘制循环停止工作,问题很多,但它们似乎主要链接到图形矩阵深度。OpenGL状态重置

看到这个问题似乎如何与启动条件相关(如果它启动它不会迟后失败,否则它不会启动)。我想知道是否有某种方法可以完全平衡图形状态,即使以全屏运行应用程序为代价。

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

+0

您可以请发表[mcve]吗? –

+0

我想凯文说的是真的。重点是,也许有不同的方式来做你在做什么,解决方案可能来自那里,而不是重新设置OpenGL。重要的一点。你如何从AWT访问OpenGL?这是你自己的发展还是你使用另一个像JOGL的图书馆?我发现Swing/AWT/JOGL有几个问题,经过搜索后,我创建了NEWT实现解决方案,至少对于MAC来说。 –

+0

现在我们要做的是实例化N个组件,其中一些是awt并作为组件添加到PApplet中,另一些是自定义组件,这些组件在绘制循环期间使用PApplet实例绘制自己。自定义组件的性质是复合的,所以它们会推送矩阵和剪辑/ noclips(关心矩阵堆栈深度)。跟在datenWolf之后,我发现这个GL gl =((PJOGL)beginPGL())。gl.getGL(); endPGL(); 关于openGL上下文。我会报告以防万一。说到图形,我真的只是一个图书馆用户,这就是为什么我选择了处理。 – Yggdrasil

回答

1

有没有办法重置一个OpenGL上下文做默认状态。即使有,这也不能解决你的问题,因为你的麻烦似乎源于这样一个事实,即当你的代码完成时,它不会在进入时发现它的状态下留下OpenGL上下文。这当然不是默认状态。

然而,可能的是,您只是为您的代码创建OpenGL上下文,并暂时切换到该上下文,以执行您的操作,然后返回到原始代码。 Windows并不依赖于OpenGL上下文,而OpenGL上下文并不依赖于Windows;它会根据您的需要进行选择和混合(只要像素格式兼容,它们适用于大多数窗口/上下文设置)。

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

您将遇到的一个问题是使用JOGL/AWT进行所有这些。在对图书馆参考资料的快速浏览中,我发现没有明显的方法可以确定哪些可绘制的当前活动的OpenGL上下文被绑定到;但很容易获得当前的上下文。然而,JOGL本身是开源的,所以如果没有现成的方法来实现这一点,它应该很容易实现(也是对图书馆的一种有价值的补充)。