Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
Python 我应该如何在OpenGL中有条件地渲染?_Python_Qt_Opengl_Pyopengl - Fatal编程技术网

Python 我应该如何在OpenGL中有条件地渲染?

Python 我应该如何在OpenGL中有条件地渲染?,python,qt,opengl,pyopengl,Python,Qt,Opengl,Pyopengl,我在理解如何有条件地渲染形状时遇到了一些问题。例如,假设我想基于按下按钮来渲染一个3d对象——我该如何处理它?我还没有找到类似的示例代码或教程,所以我很好奇这方面的最佳实践是什么 现在,我在网上做了很多搜索,我发现了计时器的用途,但我不确定我是否应该在这里使用计时器。例如,我想我应该使用一个计时器来调用一个名为renderScene的方法,该方法根据按钮按下时调用的其他方法设置的布尔值来确定要渲染的内容。所以,基本上,当你按下一个按钮时,你将一个布尔值设置为true,这由renderScene获

我在理解如何有条件地渲染形状时遇到了一些问题。例如,假设我想基于按下按钮来渲染一个3d对象——我该如何处理它?我还没有找到类似的示例代码或教程,所以我很好奇这方面的最佳实践是什么

现在,我在网上做了很多搜索,我发现了计时器的用途,但我不确定我是否应该在这里使用计时器。例如,我想我应该使用一个计时器来调用一个名为renderScene的方法,该方法根据按钮按下时调用的其他方法设置的布尔值来确定要渲染的内容。所以,基本上,当你按下一个按钮时,你将一个布尔值设置为true,这由renderScene获取,renderScene通过使用定时器调用。然后renderScene继续并调用updateGL,场景被更新


我应该这样做,还是有更好的方法?我觉得这可能不是正确的解决方案,所以我伸出了手。

在opengl中有条件地渲染几何体就像跟踪布尔值一样简单,并相应地忽略或发出相应的绘制调用。唯一需要做的是根据所选的窗口框架重新绘制场景。如果你不需要定期重画;每次更改后只需触发一次重绘。alledgely update会触发paintGL事件(另请参见:)。

我要补充的是,在进行条件绘制时,您应该记住某些绘制特征,如混合、透明度和任何投影变化。正如所怀疑的和所回答的那样,您只需应用布尔检查以查看是否满足绘制的条件,但也要确保条件部分包含所有必要的混合信息或纹理信息,以便根据需要打开或关闭。最好的选择是自包含的draw方法,然后使用布尔值检查调用这些自包含的方法,这样所有条件都是一致的。