지구본 (지도가있는 구)을 iOS에서 OpenGL ES 1.1으로 렌더링하려고합니다.OpenGL ES로 지구본 그리기
구체를 그리고 테두리를 매핑 할 수 있지만 한 가지 문제가 있습니다. 내 눈앞에서 직면하지 않는 선들도 화면에 그려집니다.. 이 같이 : 그림에서
, 당신은 미국이 잘 렌더링하는 것을 볼 수 있습니다,하지만 당신은 호주 뒷면에 렌더링 볼 수 있습니다. 그것은 지구의 뒤쪽에 있기 때문에 보여지기로되어 있지 않습니다. 지구상의 BLACK과 PURPLE 줄무늬는 투명하지 않습니다.
적절한 글로브를 만들기 위해 어떤 매개 변수를 조정해야합니까?
도움이 될 경우 코드의 관련 부분을 게시 할 수 있습니다. 어느 부분에 질문하면 질문을 업데이트 할 것입니다.
미리 감사드립니다.
업데이트 : 이것은 내가 구체 렌더링에 사용하고 무엇을 :
glEnableClientState(GL_VERTEX_ARRAY);
glPolygonOffset(-1.0f, -1.0f);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
int x, y;
GLfloat curR, curG, curB;
curR = curG = curB = 0.15f;
for (y=0; y<EARTH_LAT_RES; y++) {
if (y%10 == 0) {
glColor4f(curR, curG, curB, 1.0f);
curR = curR == 0.15f ? 0.6f : 0.15f;
curB = curB == 0.15f ? 0.6f : 0.15f;
}
for (x=0; x<EARTH_LON_RES; x++) {
Vertex3D vs[4];
vs[1] = vertices[x][y];
vs[0] = vertices[x][y+1];
vs[3] = vertices[x+1][y];
vs[2] = vertices[x+1][y+1];
glVertexPointer(3, GL_FLOAT, 0, vs);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
}
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glDisable(GL_POLYGON_OFFSET_FILL);
glDisableClientState(GL_VERTEX_ARRAY);
이 내가 경계선 렌더링하는 데 사용하고 무엇을 :
// vxp is a data structure with vertex arrays that represent
// border lines
int i;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState(GL_VERTEX_ARRAY);
for (i=0; i<vxp->nFeatures; i++)
{
glVertexPointer(3, GL_FLOAT, 0, vxp->pFeatures[i].pVerts);
glDrawArrays(GL_LINE_STRIP, 0, vxp->pFeatures[i].nVerts);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisable(GL_BLEND);
를이 내가 을 사용하고있는 설정입니다하기 전에 :
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glEnable(GL_DEPTH_TEST); /* enable depth testing; required for z-buffer */
glEnable(GL_CULL_FACE); /* enable polygon face culling */
glCullFace(GL_BACK);
glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f);
glFrustumf (-1.0, 1.0, -1.5, 1.5, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
지오메트리로 정의 된 다양한 테두리가 있으므로 좌표를 지구 표면에 매핑 한 다음 GL_LINES (또는 선 루프 또는 다른 선 프리미티브)로 그리기위한 몇 가지 계산을 수행하고 있습니까? 모자이크 처리 된 것이 있습니까? – Tommy
@ 토미 : 예. 정확하게. 좌표를 지구 표면에 매핑하고 GL_LINE_STRIP을 사용하여 좌표를 그리는 중입니다. 나도 tessellated ...--) –
당신이 vxp 데이터를 공유 할 수있는 방법을 모르는? 비슷한 문제가 있지만 안드로이드 플랫폼을 위해 노력하고 있습니다 ... –