当将纹理复制到另一个纹理时,我需要将其垂直翻转。我知道三种简单的方法:
1.使用全屏幕四边形从一个FBO复制到另一个FBO(并在片段着色器中进行翻转)
2.使用 glBlitFrameBuffer 进行复制。
3.使用 glCopyImageSubData
我需要在两个未连接到任何FBO的纹理之间执行此复制,因此我正在尝试避免前两种解决方案。我正在尝试第三种方式。
做法如下:
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 );
还是不起作用。
glCopyImageSubData
只是GPU端的memcpy
,它不进行任何转换。我认为使用着色器(或只是翻转纹理坐标)是唯一的选择。 - keltarinvert-y
标志上传另一个吗? - mr5