c - 将不同大小的纹理附加到 FBO 的问题
问题描述
今天我在开发 OpenGL 4.5 应用程序时遇到了一个奇怪的问题。我尝试将两种不同大小的纹理作为颜色附件附加到一个 FBO 上,以创建一个绽放着色器。据我所知,在现代 OpenGL 版本中这应该是可能的。
这是我正在使用的代码:
//Create textures
GLuint tex[2];
glCreateTextures( GL_TEXTURE_2D, 2, tex );
glTextureStorage2D( tex[0], 1, GL_RGB8, 2048, 2048 );
glTextureStorage2D( tex[1], 1, GL_RGB8, 1024, 1024 );
//Create FBO
GLuint fbo;
glCreateFramebuffers( 1, &fbo );
glNamedFramebufferTexture( fbo, GL_COLOR_ATTACHMENT0, tex[0], 0 );
glNamedFramebufferTexture( fbo, GL_COLOR_ATTACHMENT1, tex[1], 0 );
//Check completeness
GLenum comp = glCheckNamedFramebufferStatus( fbo, GL_FRAMEBUFFER );
但是,在我的情况下,我希望comp
是return 。GL_FRAMEBUFFER_COMPLETE
glCheckNamedFramebufferStatus
GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
恐怕这可能是基于这两个线程的一些驱动程序错误,因为显然INCOMPLETE_DIMENSIONS
已从较新的 OpenGL 版本中删除:
这是说明问题的完整代码 - https://pastebin.com/c9Hqzzky。
我的输出是:
0x8cd9
0x8cd9 - GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
fbotest: fbotest.c:41: main: Assertion `comp != GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT' failed.
Aborted (core dumped)
我有 Nvidia GTX 1060 显卡、Ubuntu 18.04LTS 和 Nvidia 驱动程序版本 390.67。
有没有人见过类似的行为?如果是这样,有哪些可能的解决方法?提前感谢您的帮助
解决方案
这实际上是 ARB DSA 的 Nvidia 错误(我已于去年 2 月提交),如果您使用非命名版本,它不会给出验证错误。
推荐阅读
- php - PHP在while循环中检查条件
- java - 如果在另一个活动中添加数据,如何更新 recyclerView?
- css - &。在 SCSS 中不起作用……为什么不呢?
- ios - AudioKit 录音机设置,麦克风崩溃,“所需条件为假:mixedDest”
- php - 如何使用 const list 显示 json 数据
- javascript - React 路由器在更改路由时重新安装子节点(没有协调)
- python - LableEncoder() 错误(sklearn)
- php - SQL注入安全加密?
- datatables - 基于复选框值的数据行颜色
- python - 无法使用 Python 检测乱码名称