我正在编写一个面向对象的 openGL 应用程序,它呈现一些 3D 模型(这些模型存储在我自己的类中,具有多个属性和方法)。其中一种对象类型(使用体积渲染着色器)要求我首先将输出渲染为固定大小的纹理(例如 256*256),然后恢复之前的视口大小并在屏幕上以 2D 形式拉伸此纹理。
实际的问题是我无法从这个对象内部获得实际的视口大小,除非(我猜)我存储了对 GLEventListener 的 GLU 对象的引用,我显然不希望我创建的每个模型都使用它。
但我也不想在 GLEventListener 中有静态变量(如果我想要一个有 2 个画布的应用程序怎么办?)
最重要的是视口尺寸,但我认为我还需要引用我的自定义 Camera 对象。我怎样才能做到这一点而不以某种方式使用静态?