[英]Java Android OpenGL ES 2.0 - fragment shader texture2D does not work
我有一个问题,如果我尝试渲染带纹理的四边形,屏幕上什么也不会出现。 一个简单的彩色四边形效果很好。 似乎只有我使用“ texture2D”功能,才能正常工作。 但是,如果我编译着色器或链接程序,则不会收到任何错误消息。
这项工作(屏幕上出现一个红色方形框):
uniform sampler2D un_TextureUnit;
varying vec2 fr_UV;
void main()
{
gl_FragColor = vec4(1, 0, 0, 1);
}
这不起作用(屏幕上什么都没有出现):
uniform sampler2D un_TextureUnit;
varying vec2 fr_UV;
void main()
{
gl_FragColor = texture2D(un_TextureUnit, fr_UV);
}
这不起作用(屏幕上也不显示任何内容):
uniform sampler2D un_TextureUnit;
varying vec2 fr_UV;
void main()
{
vec4 c = texture2D(un_TextureUnit, vec2(0.5, 0.5));
gl_FragColor = vec4(1, 0, 0, 1);
}
请注意,我只更改为着色器,而代码中没有任何内容。 仅当我使用“ texture2D”功能时,着色器似乎无法编译,但是没有收到任何错误消息。
我的片段着色器可以很好地在三角形上绘制纹理:
precision highp float;
uniform sampler2D u_texture0;
varying vec2 v_textureCoordinate0;
void main()
{
gl_FragColor = texture2D(u_texture0, v_textureCoordinate0);
}
因此,我相信问题不在于片段着色器(类似于我的),而在于编写着色器的代码中。 我建议你检查一下:
无论如何, 这里有一个很好的教程,介绍如何绘制带有纹理的三角形。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.