Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es 在片段着色器中翻转纹理时使用别名_Opengl Es_Opengl Es 2.0_Glsl - Fatal编程技术网

Opengl es 在片段着色器中翻转纹理时使用别名

Opengl es 在片段着色器中翻转纹理时使用别名,opengl-es,opengl-es-2.0,glsl,Opengl Es,Opengl Es 2.0,Glsl,我已经创建了一个多纹理片段着色器,在其中我想翻转其中一个纹理,但当这样做时,我的纹理会变得锯齿状。这个问题有解决办法吗 这是我的片段着色器代码: void main(void) { lowp vec4 camera = texture2D(texture0, destinationTexCoord); lowp vec4 viewfinder = texture2D(texture1, vec2(destinationTexCoord.x, 1.0 - destinationT

我已经创建了一个多纹理片段着色器,在其中我想翻转其中一个纹理,但当这样做时,我的纹理会变得锯齿状。这个问题有解决办法吗

这是我的片段着色器代码:

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);
一些背景信息:我正在片段着色器中混合这些纹理(混合代码剥离),因此我不寻找旋转第二个平面并在帧缓冲区上合并它们的解决方案。我想知道在片段着色器中围绕纹理坐标翻转/旋转是否是个好主意


最后,我将给出一个统一的说法:旋转或不旋转,导致一个纹理旋转或不旋转。

使用mediump而不是lowp作为destinationdecoord将提高 vec2(destinationExcoord.x,1.0-destinationExcoord.y)计算。但是,我的建议是使用两个不同的VEC2,而不是使用依赖纹理读取。i、 e.cameraTexCoord和viewfinderTexCoord。可以避免碎片着色器中的mediump计算,并利用硬件(希望)优化的垂直碎片插值


实际上没有理由对纹理坐标使用lowp,除非它们是相关的,在这种情况下,lowp可能更适合碎片着色器计算。否则,根据我的经验,lowp并没有带来任何好处(不过我只知道iOS上的PowerVR硬件)。

使用mediump而不是lowp作为DestinationExcoord将提高 vec2(destinationExcoord.x,1.0-destinationExcoord.y)计算。但是,我的建议是使用两个不同的VEC2,而不是使用依赖纹理读取。i、 e.cameraTexCoord和viewfinderTexCoord。可以避免碎片着色器中的mediump计算,并利用硬件(希望)优化的垂直碎片插值


实际上没有理由对纹理坐标使用lowp,除非它们是相关的,在这种情况下,lowp可能更适合碎片着色器计算。否则,根据我的经验,lowp并没有带来任何好处(我只知道iOS上的PowerVR硬件)。

你忘了为该纹理启用纹理过滤吗?编辑了最初的帖子:我添加了我正在使用的纹理过滤。你能发布一张这看起来像什么的图片吗?在顶点着色器中翻转纹理会更快吗,事实上片段着色器当然更强大,但由于只需要一个坐标的逐顶点翻转,非一些非线性操作…@BartekBanachewicz如果我想在我的多重纹理着色器中只旋转1个纹理,这也可以吗?你忘了为该纹理启用纹理过滤吗?编辑了初始帖子:我添加了我正在使用的纹理过滤。你能发布一张这看起来像什么的图片吗?不会在中翻转纹理吗顶点着色器会更快吗?片段着色器当然更强大,但由于您只需要一个坐标的逐顶点翻转,非一些非线性操作…@BartekBanachewicz如果我想在我的多重纹理着色器中只旋转一个纹理,这也可以吗?回答得很好!感谢您提供有关lowp的更多信息。;)回答得好!感谢您提供有关lowp的更多信息。;)