Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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_Shader - Fatal编程技术网

Opengl es 在着色器中打开偏移纹理坐标

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

我正在使用纹理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_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值