우리는 대부분 정사영 모드로 실행되는 2D 게임을 가지고 있지만, 한 부분은 다른 2D 오브젝트 사이에 렌더링되는 3D 모델을 보여줍니다. 어떻게 원근감 모드로 전환하고, 그 모델을 렌더링 한 다음, 다른 오브젝트를 직교 모드로 렌더링하기 위해 다시 전환 할 수 있습니까?절반으로 렌더링 된 직교 장면 위에 OpenGL을 원근감 모드로 전환 하시겠습니까?
OpenGL ES에서 어떻게 수행되었는지 보여줄 수 있다면 칭찬 해주세요.
우리는 대부분 정사영 모드로 실행되는 2D 게임을 가지고 있지만, 한 부분은 다른 2D 오브젝트 사이에 렌더링되는 3D 모델을 보여줍니다. 어떻게 원근감 모드로 전환하고, 그 모델을 렌더링 한 다음, 다른 오브젝트를 직교 모드로 렌더링하기 위해 다시 전환 할 수 있습니까?절반으로 렌더링 된 직교 장면 위에 OpenGL을 원근감 모드로 전환 하시겠습니까?
OpenGL ES에서 어떻게 수행되었는지 보여줄 수 있다면 칭찬 해주세요.
이 질문은 정확하게 지정되어 있지 않다고 생각합니다. 더 많은 의견을 원하십니까? 또는 2D 배경, 3D 게임 객체, 2D GUI를 갖고 싶습니다. 그런 다음이 원하는 경우
또는 다른 것을 원하십니까?
편집 :
여기작은 코드입니다 :
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,w,0,h,near,far);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(pos.x,...);
DrawQuads();
//if you want to keep your previus matrix
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluPerspective(90,width/(float)height,0.001,1000);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(pos.x,...);
glRotate(-45.0f,1,0,0);
glTranslate(0,0,distance from object);
glRotate(90.0f,1,0,0);
// or use gluLookAt
// 0,0,1 - if you want have z as up in view
// 0,1,0 - for y
//gluLookAt(pos.x,pos.y,pos.z,cam.x,cam.y,cam.z,0,0,1);
glScale(object.width/model.width,...);
DrawModel();
// Restore old ortho
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
음, "단지 그것을 할"
개체의 순서를 알고있는 것처럼 보이면 각 렌더링 사이에 z 버퍼를 지울 수도 있습니다.
나는 이전 글에 동의하며, 더 일반적인 경우는 3D 오브젝트 및 2D GUI와 같다고 생각합니다. 다시 강조하기 위해. :)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, (GLfloat)s_width/(GLfloat)s_height, near, far);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// render 3D object
glUseProgram(modelProgram);
glSetUniformMat(glGetUniformLocation(model.mvp, "mvp"), mvpMat);
glBindVertexArray(model.vao);
glDrawArrays(GL_TRIANGLES, 0, model.size);
glUseProgram(0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, 0, height, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// draw GUI
renderGUI();
내가이 후 나는 관점 모드에서 3D 모델을 렌더링 할 필요가) 배경 (스프라이트에서 직교 모드에서 여러 쿼드 렌더링하고있어, 그 후 나는 전경에서 좀 더 스프라이트를 렌더링 할 필요가있다. 전체 화면 배경이 아닙니다. 말이 돼? –
편집했습니다. 도움이 될까요? – kravemir
시간을내어 코드 예제를 작성해 주셔서 감사합니다. 나는 투영 행렬을 밀어 낼 수 있다는 것을 몰랐다. 또한 rotate/translate 코드가 도움이되었습니다. –