2015-11-05 43 views
-1

我想知道如何將不同的紋理綁定到不同的模型或如何改進我的代碼。OpenGl所有模型都具有相同的紋理

我的代碼:

public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
     gl.glLoadIdentity(); 
     GLU.gluPerspective(gl, 25.0f, (view.getWidth() * 1f)/view.getHeight(), 1, 100); 
     GLU.gluLookAt(gl, 0f, 8f, 12f, 0.0f, 0.0f, 0.0f, 0.0f, 25.0f, 0.0f); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
    gl.glEnable(GL10.GL_DEPTH_TEST); 
    gl.glEnable(GL10.GL_TEXTURE_2D); 
    loadTexture(gl, context, R.drawable.grndf); 
    loadTexture(gl, context, R.drawable.skintrip); 
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); 
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 
    gl.glTexEnvx(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE); 
    } 



private int[] mTexture = new int[2]; 

private void loadTexture(GL10 gl, Context mContext, int mTex) { 
     gl.glGenTextures(1, mTexture, 0); 
     gl.glBindTexture(GL10.GL_TEXTURE_2D, mTexture[0]); 

     Bitmap bitmap; 
     bitmap = BitmapFactory.decodeResource(mContext.getResources(), mTex); 
     GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); 
     bitmap.recycle();} 
+0

的OpenGL沒有概念車型。您只需在繪製調用 – BDL

+0

@BDL之前綁定正確的紋理,但是如何將它們綁定到僅一個對象?我的所有對象都具有相同的紋理 – limus

回答

1

前面已經說過的評論,有喜歡的模型或對象的概念。 OpenGL是一個狀態機,這意味着在每次繪製調用時都會使用當前狀態。所以,如果你想擁有使用不同的紋理兩隊戰平通話,那麼你必須確保在每一個取水調用正確的質地,勢必:

glBindTexture(GL_TEXTURE_2D, texture1); 
glDraw*... //First draw call using texture1 

glBindTexture(GL_TEXTURE_2D, texture2); 
glDraw*... //Second draw call using texture2 
+0

非常感謝您解釋! – limus

相關問題