【发布时间】:2015-06-18 07:57:24
【问题描述】:
我收集到我可以创建一个带有渲染缓冲区和纹理附件的帧缓冲区,大小为我想要的任何大小(卡支持)。但是,当glViewport 受到GL_MAX_VIEWPORT_DIMS 的限制时,我如何才能真正绘制到整个东西,GL_MAX_VIEWPORT_DIMS 需要至少与窗口一样大,并且在我的情况下,不会更大. https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml
在我的用例中,我希望为点光源创建一个阴影立方体贴图,这是一个不错的大性感尺寸。我的窗口是 1600x900。由于一些后处理会影响渲染到四边形,这些是下采样的,我之前曾调用glViewport 将大小设置为各种东西。
但我不能让它比窗口大,所以我永远无法绘制到帧缓冲区的外部区域?
或者游戏在创建帧缓冲区时永远不会超过窗口的大小?
【问题讨论】:
-
glGet()forGL_MAX_VIEWPORT_DIMS给你 1600x900?这是什么设备?这似乎很不寻常。它通常类似于最大纹理大小。在较新的设备上类似 4096x4096 或 8192x8192。 -
@RetoKoradi 这几乎肯定不是我的卡。我正在使用带有最新驱动程序的 AMD Radeon HD 7980。我在我的应用程序中运行 OpenGL 4。此卡的最大 tex 大小(查询 OpenGL)为 16384
-
当你查询
GL_MAX_VIEWPORT_DIMS时你真的得到了1600x900? -
你知道,我做了一个假设。不,
glGetIntergerv也给了我 16384。但是我已经仔细检查过,在我将它设置为我的帧缓冲区的大小后,没有其他 glViewport 调用...... -
它没有渲染到整个FBO?不确定您的情况到底是怎么回事。我在下面的答案中解释了它应该如何表现。
标签: opengl