Opengl es 在着色器中打开偏移纹理坐标
我正在使用纹理altas和该顶点着色器在四边形上渲染纹理:Opengl es 在着色器中打开偏移纹理坐标,opengl-es,shader,Opengl Es,Shader,我正在使用纹理altas和该顶点着色器在四边形上渲染纹理: "uniform mat4 uMVPMatrix;" + "attribute vec4 vPosition;" + "attribute vec4 a_Color;" + "attribute vec2 a_texCoord;" + "varying vec4 v_Color;" + "varying vec2 v_texCoord;" + "uniform vec4 u_ne
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"attribute vec4 a_Color;" +
"attribute vec2 a_texCoord;" +
"varying vec4 v_Color;" +
"varying vec2 v_texCoord;" +
"uniform vec4 u_newColor;" +
"void main() {" +
" float offset = 0.33;" +
" gl_Position = uMVPMatrix * vPosition;" +
" v_texCoord.x = a_texCoord.x + offset;" +
" v_texCoord.y = a_texCoord.y + offset;" +
" v_Color = u_newColor;" +
"}";
一切都很好,我渲染了纹理的三分之一,显示了atlas中9的中间瓷砖。除此之外,我希望“偏移”是一个变量,即我希望根据纹理图集中需要的“瓷砖”对其进行更改
如何做到这一点?添加制服并使用:
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"attribute vec4 a_Color;" +
"attribute vec2 a_texCoord;" +
"varying vec4 v_Color;" +
"varying vec2 v_texCoord;" +
"uniform vec4 u_newColor;" +
"uniform vec2 u_offset ;" + //vec2 so there is a x and y component that you can set
"void main() {" +
" gl_Position = uMVPMatrix * vPosition;" +
" v_texCoord = a_texCoord + u_offset;" +
" v_Color = u_newColor;" +
"}";
你把制服放在
glUniform2f(u_offset_location, xTile, yTile);
谢谢你的快速回复。这正是我所尝试的,但是无论我设置了什么值,纹理都不再可见。我确实在某个地方读到过“偏移量”必须是一个常数?偏移量应该在0和1之间,要得到最初的结果,您需要尝试0.33,0.33来获得xTile和yTile值