在 glCopyTexImage1D() OpenGL 3.3 中使用 GL_RGB10_A2UI 内部格式
Posted
技术标签:
【中文标题】在 glCopyTexImage1D() OpenGL 3.3 中使用 GL_RGB10_A2UI 内部格式【英文标题】:Using GL_RGB10_A2UI internal format in glCopyTexImage1D() OpenGL 3.3 【发布时间】:2013-05-28 07:04:48 【问题描述】:我在 glCopyTexImage1D() API 中使用 GL_RGB10_A2UI 内部格式,但出现 GL_INVALID_OPERATION 错误。 OpenGL 3.3 是否支持 glCopyTexImage1D() 中的 GL_RGB10_A2UI ?
【问题讨论】:
如果您使用的是 OpenGL 3.x,为什么不直接渲染到该纹理? 【参考方案1】:GL_RGB10_A2UI
是一个integral image format;它包含整数,而不是存储为整数的标准化浮点值。因此,除非您的 帧缓冲区 还包含无符号整数值,否则此复制操作将失败并出现预期错误。
当然,让帧缓冲区拥有无符号整数(而不是通常情况下的无符号归一化整数)的唯一方法是使用 FBO。在这种情况下,您可以直接渲染到此纹理,而无需从中复制。
我猜你可能打算使用GL_RGB10_A2
,它代表无符号标准化值。
【讨论】:
我的意思是使用 GL_RGB10_A2UI 而不是 GL_RGB10_A2。因此,即使我使用 FBO,我也不会调用 glCopyTexImageD() 来读取缓冲区内容。我知道这是不必要的,但我正在使用 API。没有其他方法可以使用 GL_RGB10_A2UI 调用 glCopyTexImageD() 吗? @maverick9888:您正在读取的源是否包含无符号整数?如果没有,那么不,它不会起作用。以上是关于在 glCopyTexImage1D() OpenGL 3.3 中使用 GL_RGB10_A2UI 内部格式的主要内容,如果未能解决你的问题,请参考以下文章
在window.open打开的窗口里再用window.open办法打开一窗口