Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用OpenGL4在WorldWind中保存DrawingState_Java_Opengl_Jogl_Opengl 4_Worldwind - Fatal编程技术网

Java 使用OpenGL4在WorldWind中保存DrawingState

Java 使用OpenGL4在WorldWind中保存DrawingState,java,opengl,jogl,opengl-4,worldwind,Java,Opengl,Jogl,Opengl 4,Worldwind,我目前正在尝试在WorldWind地图上显示点云。WorldWind网站上的所有示例都是使用OpenGL2完成的。但是我试着用OpenGL4代替它,因为我以前用过一点 现在,我在管理图形状态时遇到了一个问题: “我们从WorldWind违约中改变的任何状态都必须恢复 渲染立方体后,否则将导致其他对象渲染 错误地” 。在OpenGL2中,它相当简单。在绘制任何内容之前,调用beginDrawing() protected void beginDrawing(DrawContext dc){ GL

我目前正在尝试在WorldWind地图上显示点云。WorldWind网站上的所有示例都是使用OpenGL2完成的。但是我试着用OpenGL4代替它,因为我以前用过一点

现在,我在管理图形状态时遇到了一个问题:

“我们从WorldWind违约中改变的任何状态都必须恢复 渲染立方体后,否则将导致其他对象渲染 错误地”

。在OpenGL2中,它相当简单。在绘制任何内容之前,调用
beginDrawing()

protected void beginDrawing(DrawContext dc){

GL2 gl = dc.getGL().getGL2();

int attrMask = GL2.GL_CURRENT_BIT | GL.GL_COLOR_BUFFER_BIT;
gl.glPushAttrib(attrMask);

if (!dc.isPickingMode())
    dc.beginStandardLighting(); }
glPushAttrib
方法用于保存状态,稍后将在
endDrawing()
中弹出

我可以用OpenGL4实现同样的功能吗?如果是,怎么做

到目前为止,我找到的所有东西都是针对OpenGL2的。我发现
DrawContext
中有名为
restoreDefaultCurrentColor()
restoredefaultdepththetting()
restoredefaultbling()
的方法,但它们没有帮助


编辑:所以我发现如果我调用
gl.glBindProgram(0)
解除当前使用的程序的绑定,我实际上可以看到一些东西。我看到了WorldWind的标准图层。这意味着星星、城市名称等,但地球仍然是黑暗的。在渲染过程中似乎有东西断裂。

我认为这不是一个好主意,因为固定管道和可编程管道非常不同,据我记忆所及,Worldwind使用固定管道。此外,如果您使用GL4,您将不得不自己管理矩阵和变换,这不是小事。你想实现什么?@gouessej嘿,谢谢你的回答:)正如我所说的,我目前正试图在WorldWind中显示相当大的点云,并认为从理论上讲,使用GL4会更有效。好吧,你需要跟踪你所更改的一切,并恢复它。对于
glPushAttribs
/
glPopAttribs
,您可以使用
GL\u ALL\u ATTRIB\u BITS
获得更多信息,但是仍然有一些东西是您可以做的,这些东西不会被还原。@derhass感谢您的建议,但它似乎没有改变任何东西。我想知道是否有可能做我想做的事。目前,在我看来,可编程管道以某种方式破坏了用于地球仪的固定管道(我认为)。“在我看来,可编程管道以某种方式破坏了用于地球仪的固定管道(我认为)”,如果yoiu恢复程序0,那么绘图将回到固定管道。但是仍然有许多州你可能已经修改过了。
protected void endDrawing(DrawContext dc){
GL2 gl = dc.getGL().getGL2();

if (!dc.isPickingMode())
    dc.endStandardLighting();

gl.glPopAttrib();   }