안녕하세요. OpenGL ES 1.0으로 게임을 개발하고 있는 개발자 입니다.(2일차..ㅠㅠ)


배경 Texture를 로드해서 화면에 그려준 후에

객체를 그 위에 그렸을때, 배경 위에 그려진 객체가 반투명(?)하게 그려지고 있습니다.


배경을 그리지 않고 객체만 그리는 경우에는 정상적으로 보이던 객체가

배경을 그리고 그 위에 그리는 경우 반투명하게 보여집니다.


도움부탁드려요...T.T;


[소스]

  public void onSurfaceCreated(GL10 gl, EGLConfig config)

  {

    gl.glEnable(GL10.GL_TEXTURE_2D);

    gl.glClearDepthf(1.0f);

    gl.glEnable(GL10.GL_DEPTH_TEST);

    gl.glDepthFunc(GL10.GL_LEQUAL);

    

    gl.glEnable(GL10.GL_BLEND);

    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE);

  }


  public void onSurfaceChanged(GL10 gl, int width, int height)

  {

    gl.glViewport(0, 0, width, height);

    gl.glMatrixMode(GL10.GL_PROJECTION);

    gl.glLoadIdentity();

    gl.glOrthof(0f, 1f, 0f, 1f, -1f, 1f);

  }


  public void onDrawFrame(GL10 gl)

  {

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    

    scrollBackground(gl);

    moveObject(gl);

    

    gl.glEnable(GL10.GL_BLEND);

    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE);

  }


  private void scrollBackground(GL10 gl)

  {

    if(null == m_GameBackground)

      return;

    

    if(Float.MAX_VALUE == m_fBgScroll1)

      m_fBgScroll1 = 0;

    

    gl.glMatrixMode(GL10.GL_MODELVIEW);

    gl.glLoadIdentity();

    gl.glPushMatrix();

    gl.glScalef(1f, 1f, 1f);

    gl.glTranslatef(0f, 0f, 0f);

    

    gl.glMatrixMode(GL10.GL_TEXTURE);

    gl.glLoadIdentity();

    gl.glTranslatef(0.0f, -m_fBgScroll1, 0.0f); // Scrolling the texture

    

    m_GameBackground.draw(gl);

    gl.glPopMatrix();

    m_fBgScroll1 += GameEngine.SCROLL_BACKGROUND;

    gl.glLoadIdentity();

  }


  private void moveObject(GL10 gl)

  {

    gl.glMatrixMode(GL10.GL_MODELVIEW);

    gl.glLoadIdentity();

    gl.glPushMatrix();

    gl.glTranslatef(0f, 0f, 0f);

    

    gl.glMatrixMode(GL10.GL_TEXTURE);

    gl.glLoadIdentity();

    gl.glTranslatef(0f, 0f, 0f);

    

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);

    

    gl.glFrontFace(GL10.GL_CCW);

    gl.glEnable(GL10.GL_CULL_FACE);

    gl.glCullFace(GL10.GL_BACK);

    

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

    

    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertextBuffer);

    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

    gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_BYTE, indexBuffer);

    

    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

    gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

    gl.glDisable(GL10.GL_CULL_FACE);


    gl.glPopMatrix();

    gl.glLoadIdentity();

  }