使用 glcopyteximage2d 将纹理复制到另一个纹理

时间:2021-03-03 03:00:06

标签: ios opengl-es

我使用帧缓冲区将图形绘制到纹理,然后我想将这个纹理的内容复制到另一个纹理。这两个纹理是在不同的 gl 上下文中创建的。

有一个方法可以,但是性能比较差。首先使用glReadPixels从帧缓冲区读取数据,然后反预乘(因为帧缓冲区中的数据是预乘的),然后使用glTexImage2D将数据传输到另一个纹理。

网上有建议使用glCopyTexImage2D。但是我试了之后,发现贴图被复制并再次预乘,导致半透明部分渲染异常。

[EAGLContext setCurrentContext:sourceCtx];
glBindFramebuffer(GL_FRAMEBUFFER, sourceFbo);
glBindTexture(GL_TEXTURE_2D, targetTexture);
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, w, h, 0);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
[EAGLContext setCurrentContext:targetCtx];

从openGL读取的像素是预乘的,那么通过glTexImage2D/glCopyTexImage2D方法传入的数据是不是非预乘的?

0 个答案:

没有答案
相关问题