【问题标题】:How do I refer to "global" variables & objects from deep inside an openGL application?如何从 openGL 应用程序的深处引用“全局”变量和对象?
【发布时间】:2012-11-13 23:21:14
【问题描述】:

我正在编写一个面向对象的 openGL 应用程序,它可以渲染一些 3D 模型(这些模型存储在我自己的类中,具有多个属性和方法)。其中一种对象类型(使用体积渲染着色器)要求我首先将输出渲染为固定大小的纹理(例如 256*256),然后恢复之前的视口大小并在屏幕上以 2D 方式拉伸此纹理。

实际的问题是我无法从这个对象内部获得实际的视口大小,除非(我猜)我存储了对 GLEventListener 的 GLU 对象的引用,我显然不希望每个模型都使用它创建。

但我也不想在 GLEventListener 中有静态变量(如果我想要一个有 2 个画布的应用怎么办?)

最重要的是视口尺寸,但我想我还需要引用我的自定义相机对象。我怎么能不使用 static 以某种方式做到这一点?

【问题讨论】:

    标签: opengl static size viewport dimensions


    【解决方案1】:

    首先请阅读http://www.opengl.org/wiki/Common_Mistakes#The_Object_Oriented_Language_Problem

    接下来我将指向标记 GL_VIEWPORT 上的函数 glGetIntegerv

    【讨论】:

    • 谢谢! glGetIntegerv 显然是我需要的。
    【解决方案2】:

    我会将视口信息和任何其他不会更改每个画布(等)的数据存储在单个结构中,然后只为每个对象存储一个指针

    【讨论】:

    • 但这就是重点,我真的不想在每个对象中存储一个指针(你的意思是,就像在构造函数中传递它一样?)
    • 如果你想让对象渲染到不同的画布上,那么你需要将它存储在某个地方。
    猜你喜欢
    • 2021-07-14
    • 2015-05-26
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多