【问题标题】:How should I conditionally render in OpenGL?我应该如何有条件地在 OpenGL 中渲染?
【发布时间】:2014-09-25 06:42:15
【问题描述】:

我在理解应该如何有条件地渲染形状时遇到了一些麻烦。例如,假设我想根据按钮的按下来渲染一个 3d 对象——我应该如何处理呢?我真的无法找到类似这样的示例代码或教程,所以我很好奇这方面的最佳实践是什么。

现在,我在网上做了很多搜索,发现使用计时器来处理事情,但我不确定是否应该在这里使用计时器。例如,我在想我应该使用一个计时器来调用一个方法,比如它的名称为 renderScene,它根据一些布尔值来确定要呈现的内容,这些布尔值是由在按钮按下时调用的其他方法设置的。因此,基本上,当您按下按钮时,您将布尔值设置为 true,然后由通过使用计时器调用的 renderScene 拾取。然后 renderScene 继续调用 updateGL 并更新场景。

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

【问题讨论】:

    标签: python qt opengl pyopengl


    【解决方案1】:

    在 opengl 中有条件地渲染几何图形就像跟踪一个布尔值并相应地省略或发出相应的绘制调用一样简单。唯一需要的是根据您选择的窗口框架重新绘制场景。如果不需要定期重绘;每次更改后只需触发一次重绘。据称 update 会触发paintGL 事件(另请参阅:How to force QGLWidget to update screen?)。

    【讨论】:

    • 我要补充一点,在进行条件绘图时,您应该记住一些特定的绘图特性,例如混合、透明度和任何投影变化。正如所怀疑和回答的那样,您只需应用布尔检查以查看是否满足绘图条件,但还要确保条件部分包含所有必要的混合信息或纹理信息,以便根据需要打开或关闭。最好的选择是自包含的绘制方法,然后使用布尔值检查是否调用了那些自包含的方法,因此所有条件都是一致的。
    猜你喜欢
    • 2021-11-19
    • 2011-05-21
    • 2022-08-15
    • 2022-08-11
    • 2020-06-23
    • 2018-09-10
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多