2012-03-18 29 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)); 
} 

変更テックスCOORDS場合

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

(クワッドが完全テクスチャ着色なりますが、テクスチャがオーバースケールするMinecraftの画素にスタイル)。

答えて

1

クワッドは完全にテクスチャや色になりますが、テクスチャがオーバースケールされます(Minecraftのピクセルスタイル)

あなたはGL_NEARESTフィルタリングが有効になってデフォルトを持っているかのように聞こえます。代わりにGL_LINEARを使用してみてください:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml

関連する問題