【发布时间】:2012-08-31 02:33:30
【问题描述】:
我创建了一个多纹理片段着色器,我想在其中翻转其中一个纹理,但这样做时,我的纹理变得锯齿状。这个问题有解决办法吗?
这是我的片段着色器代码:
void main(void)
{
lowp vec4 camera = texture2D(texture0, destinationTexCoord);
lowp vec4 viewfinder = texture2D(texture1, vec2(destinationTexCoord.x, 1.0 - destinationTexCoord.y));
lowp vec4 result = mix(camera, viewfinder, viewfinder.a);
gl_FragColor = result;
}
我正在使用的纹理过滤:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
一些背景信息:我在我的片段着色器中混合这些纹理(混合代码被剥离)所以我不是在寻找一个解决方案,我旋转第二个平面并将它们合并到帧缓冲区中。我想知道在我的片段着色器中翻转/旋转纹理坐标是否是个好主意。
最后我会传递一个统一的说法:旋转或不旋转,导致一个纹理是否旋转。
【问题讨论】:
-
您是否忘记为该纹理启用纹理过滤?
-
编辑了最初的帖子:我添加了我正在使用的纹理过滤
-
你能发一张这张照片的样子吗?
-
实际上在顶点着色器中翻转纹理不会更快吗?片段着色器当然更强大,但是由于您只需要 per-vertex 翻转一个坐标,因此不需要一些非线性操作...
-
@BartekBanachewicz 如果我只想在我的多纹理着色器中旋转 1 个纹理,这是否也有效?
标签: opengl-es opengl-es-2.0 glsl