我在Android上使用NDK与OpenGL ES2。
结果是像素化的:
我的所有纹理都有这些参数:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
此外,如果我使用窗口表面而不是PBuffer并在屏幕上绘制结果,它是正确的而不是像素化的。
我尝试的另一件事是将原始纹理渲染到PBuffer并立即从缓冲区读取像素。没有使用glCopyTexImage2D的额外传递。结果也是正确的。
如果我将glCopyTexImage2D内部格式从GL_RGBA更改为GL_RGB,一切正常。我的PBuffer颜色空间格式是RGBA。
更新:我的代码似乎在模拟器上运行良好,但在Nexus 7设备上运行不正常。
那么为什么当我使用GL_RGBA格式的glCopyTexImage2D时它会像素化?