2D좌표로 Z로 위상관계만 설정해주면서 사용하고 있습니다.
문제는 제가 하나의 그림을 그리는 클래스를 가지고 이 안에 3~4개정도의 선들이나 면이 이어져 하나의 그림을 그려지게 됩니다. 이러다 보니 안에있는 바깥원이나 안쪽원은 Z값을 다르게 주어서 높낮이를 표시하려고 했는데 어떻게 할지 검색하다 보니 pushMatrix 라는게 있더군요. 근데 제가 매우 미숙해서 이걸 아무리 사용해도 값이 바뀔생각을 안합니다.
소스는 아래와 같습니다.
gl.glPushMatrix();
gl.glLineWidth(2);
gl.glColor4f(1.0f, 0.078431f, 0.576471f, 0f);
gl.glTranslatef(x, y, z);
gl.glScalef(0.18f, 0.18f, 0);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length,
GL10.GL_UNSIGNED_SHORT, indexBuffer);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer2);
gl.glColor4f(1.0f, 1.0f, 1.0f, 0.0f);
gl.glTranslatef(x, y, z+0.0001f);
gl.glDrawElements(GL10.GL_TRIANGLES, indices2.length,
GL10.GL_UNSIGNED_SHORT, indexBuffer2);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer3);
gl.glDrawElements(GL10.GL_LINE_STRIP, indices3.length,
GL10.GL_UNSIGNED_SHORT, indexBuffer3);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer4);
gl.glDrawElements(GL10.GL_LINE_STRIP, indices4.length,
GL10.GL_UNSIGNED_SHORT, indexBuffer4);
gl.glPopMatrix();
gl.glPushMatrix();
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
gl.glTranslatef(x + 0.35f * 0.175f, y + 0.35f * 0.175f, z + 0.0002f);
gl.glScalef(0.01f, 0.01f, 0);
gl.glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, mVertex.length / 3);
gl.glPopMatrix();
PushMatrix가 행렬값을 저장하고 PopMatrix가 저장된 행렬을 불러오는데 이 과정이 스택으로 처리된다고 들었습니다. 그렇다면 단순히 Push안에 변경할(회전, 색깔, 사이즈등)을 설정하고 Pop으로 닫아주면 그 안에 있는 그리는 것은 선언해 놓은 매트릭스 그림 변환 과정으로 바뀐다고 단순히 이해했는데 제가 이해를 잘못했는지 아무리해도 변함이 없네요.
고수님들의 조언을 부탁드립니다.