0

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

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

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

最重要的是视口尺寸,但我认为我还需要引用我的自定义 Camera 对象。我怎样才能做到这一点而不以某种方式使用静态

4

2 回答 2

1

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

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

于 2012-11-13T23:29:10.400 回答
0

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

于 2012-11-13T23:33:24.087 回答