【发布时间】:2013-10-24 11:27:04
【问题描述】:
在将纹理复制到另一个纹理时,我需要垂直翻转纹理。我知道 3 种简单的方法:
1 .使用全屏四边形从一次 FBO 转入另一个 FBO(并在片段着色器中翻转)
2 。使用 glBlitFrameBuffer 进行 Blit。
3 .使用glCopyImageSubData
我需要在未附加到任何 FBO 的 2 个纹理之间执行此复制,因此我试图避免前 2 个解决方案。我正在尝试第 3 个解决方案。
这样做:
glCopyImageSubData(srcTex ,GL_TEXTURE_2D,0,0,0,0,targetTex,GL_TEXTURE_2D,0,0,width ,0,height,0,1);
它不起作用。副本返回垃圾。这个方法应该能够在读取时翻转吗?是否有替代的 FBO 无关方法(仅限 GPU 端)?
顺便说一句:
glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,height ,width,0 );
也不行。
【问题讨论】:
-
你得到的可复制宽度=0,所以它根本不应该复制任何东西。但无论如何,
glCopyImageSubData只是 GPU 端的memcpy,它不执行任何转换。我认为使用着色器(或只是翻转纹理坐标)是唯一的选择。 -
用
invert-y标志上传另一个?
标签: opengl