2014-11-05 77 views
0

我使用贴图尔塔斯和这个顶点着色渲染在四纹理:opengles抵消纹理坐标的着色器

"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;" + 
    "}"; 

一切工作正常,我呈现了三分之一,至显示9的一个中间瓦片的纹理在地图集。除了我想'偏移量'是一个变量,即我想根据纹理图集中需要的'瓦片'来改变它。

这怎么可能?

回答

0

添加均匀,使用:

"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

感谢您的快速回复均匀。这正是我所尝试的,但无论我设置的值如何,纹理都不再可见。我确实在某处读到'抵消'必须是一个常数? – user3725725 2014-11-05 11:28:57

+0

偏移量应该介于0和1之间,以获得最初为'xTile'和'yTile'值设置'0.33,0.33'的结果 – 2014-11-05 11:35:36