2012-03-18 133 views
1

我得到了256 * 256紋理,一切都很好,但是我試圖在整個四邊形上映射整個紋理的部分已被破壞。
我的四邊形從左到右只有1/5的紋理,其餘的是黑色的,這意味着沒有紋理。
紋理部分一般工作就像它應該。
glFrontFace是不變(默認值)與創建
質地:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);紋理四邊形(三角形帶)OpenGL ES 2.0

GLfloat quad_pos[] = 
{ 
0.5, 0.5, 0.0, 
-0.5, 0.5, 0.0, 
0.5,-0.5, 0.0, 
-0.5,-0.5, 0.0 
}; 

//Maybe i need 5 and 6 verticles tex coords? 
GLfloat quad_tex[]= 
{ 
0.0, 1.0, 
0.0, 0.0, 
1.0, 1.0, 
1.0, 0.0 
}; 

GLfloat quad_col[]= 
{ 
0.0, 1.0, 1.0, 1.0, 
1.0, 0.0, 1.0, 1.0, 
1.0, 1.0, 0.0, 1.0, 
0.0, 0.0, 1.0, 1.0 
}; 

//In draw_quad method() 
//Binding texture and setting uniforms/attributes skipped 

glDrawArrays(GL_TRIANGLE_STRIP,0,4);

頂點着色器

attribute vec4 av_col; 
attribute vec4 av_pos; 
attribute vec2 av_tex; 
varying vec4 vv_col; 
varying vec2 vv_tex; 
uniform mat4 um_mvp; 
void main() 
{ 
vv_col = av_col; 
vv_tex = av_tex; 
gl_Position = um_mvp * av_pos; 
} 

片段着色器

precision lowp float; 
uniform sampler2D us_tex; 
varying vec4 vv_col; 
varying vec2 vv_tex; 
void main() 
{ 
gl_FragColor = (vv_col * texture2D(us_tex, vv_tex)); 
} 

如果改變TEX COORDS到

GLfloat quad_tex[]= 
{ 
0.0, 0.2, 
0.0, 0.0, 
0.2, 0.2, 
0.2, 0.0 
}; 

四將全部紋理和顏色,但質地將超標度(的Minecraft像素樣式)。

回答