2011-04-13 7 views
0

텍스처는 onSurfaceCreated (GL10의 GL)에서이 기능을 생성 : 나는 3D 객체가 오렌지하지만 분명히 2D 텍스처의 밤은이 그려진이를 호출하지 않고 프레임을 그릴 경우android texture2D는 3D 개체 손실을 야기하고 화면에 2D 텍스처를 그립니다.

public static int loadText(GL10 gl, float width, float height, String text) { 
     gl.glGenTextures(1, mTextureNameWorkspace, 0); 
     textureName = mTextureNameWorkspace[0]; 
     gl.glBindTexture(GL10.GL_TEXTURE_2D, textureName); 
     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_CLAMP_TO_EDGE); 
     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE); 
     gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE); 
     bitmap = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_4444); 
     canvas = new Canvas(bitmap); 
     canvas.drawText(text, width/2, 50, paint); 
     GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); 
     mCropWorkspace[0] = 0; 
     mCropWorkspace[1] = bitmap.getHeight(); 
     mCropWorkspace[2] = bitmap.getWidth(); 
     mCropWorkspace[3] = -bitmap.getHeight(); 
     bitmap.recycle(); 
     ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCropWorkspace, 0); 
     return textureName; 
    } 

문제입니다. 그러나 이것을 호출 한 후 프레임을 그리면 3d 객체가 검정색이됩니다. 그림에 사용하는 코드 :

 gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
     gl.glDisable(GL10.GL_BLEND); 
     gl.glShadeModel(GL10.GL_SMOOTH); 
     gl.glMatrixMode(GL10.GL_PROJECTION); 
     gl.glLoadIdentity(); 
     gl.glEnable(GL10.GL_DEPTH_TEST); 
     gl.glLoadIdentity(); 
     GLU.gluPerspective(gl, 45.0f, (float) width/(float) height, 0.1f, 500.0f); 
     gl.glMatrixMode(GL10.GL_MODELVIEW); 
     gl.glLoadIdentity(); 
     gl.glTranslatef(4, 2, -10); 
     gl.glRotatef(45, 0, 1, 0); 
     car.draw(gl); 

답변

3

어디에서나 텍스처 유닛을 활성화 할 수 없습니다. 다른 텍스처 관련 호출을 수행하기 전에 glEnable(GL_TEXTURE_2D)을 입력하십시오.

+0

gl.glDisable (GL10.GL_TEXTURE_2D); onDrawFrame (GL10 gl)의 시작 부분에서 완벽하게 감사했습니다. – ng93

관련 문제