2011-10-18 13 views
0

現在、私のテクスチャを描画する必要がある色付きの四角形以外何も得られません。白いテクスチャOpengl-es Android

私は提案のように、私は描画可能nodpiフォルダにテクスチャを配置しているが、それでも私は白色の取得2(128×128)

のパワーとサイズにテクスチャを必ず行っている

(または他のそれに応じた色)の正方形。ここで

私の正方形のオブジェクトコードです:

public class MTestSquare { 




private float vertices[] = { 
     0.0f, 1.0f, 0.0f, 
     0.0f, 0.0f, 0.0f, 
     1.0f, 0.0f, 0.0f, 
     1.0f, 1.0f, 0.0f 
}; 

private short indices[] = {0, 1, 2, 0, 2, 3,}; 

private float texture[] = { 
     0.0f, 1.0f, 
     1.0f, 1.0f, 
     0.0f, 0.0f, 
     1.0f, 0.0f 
}; 
private FloatBuffer vertexBuffer; 

private FloatBuffer textureBuffer; 

private ShortBuffer indexBuffer; 

private int[] textures = new int[1]; 





public MTestSquare() { 

    ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4); 
     vbb.order(ByteOrder.nativeOrder()); 
     vertexBuffer = vbb.asFloatBuffer(); 
     vertexBuffer.put(vertices); 
     vertexBuffer.position(0); 

    ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length*2); 
     ibb.order(ByteOrder.nativeOrder()); 
     indexBuffer = ibb.asShortBuffer(); 
     indexBuffer.put(indices); 
     indexBuffer.position(0); 

    ByteBuffer tbb = ByteBuffer.allocateDirect(texture.length * 4); 
     tbb.order(ByteOrder.nativeOrder()); 
     textureBuffer = tbb.asFloatBuffer(); 
     textureBuffer.put(texture); 
     textureBuffer.position(0); 


} 


public void loadGLTexture(GL10 gl, Context context) { 

    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.testtexture); 
    gl.glGenTextures(1, textures, 0); 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT); 
     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT); 
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); 
    bitmap.recycle(); 

} 

public void draw(GL10 gl) { 

    gl.glFrontFace(GL10.GL_CCW); 
    gl.glEnable(GL10.GL_CULL_FACE); 
    gl.glCullFace(GL10.GL_BACK); 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); 

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 

    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); 
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer); 
    gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, 
         GL10.GL_UNSIGNED_SHORT, indexBuffer); 
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
    gl.glDisable(GL10.GL_CULL_FACE); 
} 

} 

私は

square.draw(gl) 

で引き分け広場に四角の中に描き、私はonSurfaceCreated

square.loadGLTexture(gl, this.context); 
にこのコード行を入れていますテクスチャをロードする

答えて

0

多分このコンテンツを確認することができます。 OpenGL Texture Tutorial

int InitGL(GLvoid)        // All Setup For OpenGL Goes Here 
{ 
    if (!LoadGLTextures())       // Jump To Texture Loading Routine (NEW) 
    { 
     return FALSE;       // If Texture Didn't Load Return FALSE (NEW) 
    } 

    glEnable(GL_TEXTURE_2D);      // Enable Texture Mapping (NEW) 
    glShadeModel(GL_SMOOTH);      // Enable Smooth Shading 
    glClearColor(0.0f, 0.0f, 0.0f, 0.5f);     // Black Background 
    glClearDepth(1.0f);       // Depth Buffer Setup 
    glEnable(GL_DEPTH_TEST);      // Enables Depth Testing 
    glDepthFunc(GL_LEQUAL);       // The Type Of Depth Testing To Do 
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);   // Really Nice Perspective Calculations 
    return TRUE;        // Initialization Went OK 
} 
+0

これは私が私のonSurfaceCreatedに持っているものは基本的です。これはどこにあるべきですか?私のテクスチャが正しく読み込まれていないからではないでしょうか。 (私は斜めの線を示す半透明のグラフィックを得ます)オブジェクトの色はテクスチャの色に影響しますか? – Jack

+0

ああ待って...それはちょうどフリップ90度と正方形の右側の角が間違っている私のテクスチャです... – Jack

+0

ちょうど問題フロートテクスチャ[]の値 – Jack

1

実際にテクスチャリングを有効にしましたか?

gl.glEnable(GL10.GL_TEXTURE_2D); 
関連する問題