2013-07-08 7 views
0

구 주위에 궤도를 그리기를 원합니다. 각 포인트는 위도와 경도로 구성됩니다. 그래서 저는 첫 번째 회전 (long), 두 번째 (latitude), 그리고 나서 translation (z)의 순서로 각 점을 배치하려고했습니다.구 (궤도) 주위에 궤적 그리기

하지만 glBegin()하고 ... 그것은 금지 된 것 glEnd() 사이의 변환을 할 경우 나는

은 당신이 작업을 수행하는 방법에 대한 어떤 생각을 가지고 있습니까 .. 선을 그릴 수없는 이유는 무엇입니까? 변환을 수행하는 대신에 각 포인트의 좌표 (x, y, z)를 lat/lon/alt에서 직접 계산해야합니까? (나는 변환이 스스로 작업을하는 것보다 빠르다는 것을 읽었습니다 ...)

답변

0

변환을 수행하는 버텍스 셰이더를 업로드하지 않는 한, 그렇습니다. 또한 glRotate 등의 함수는 실제로 OpenGL 3.0 이후 사용되지 않습니다.

'느림'은 상대적입니다. glRotate() 등의 호출을 사용하여 회전을 수행하는 것이 각 꼭지점의 3D 공간에서의 위치를 ​​계산하는 것보다 느리다는 것을 확실히 알고 있습니다.

관련된 궤적 인 경우 3d 공간에서 직선으로 그리는 대신 지구의 큰 원을 따라 가기를 원할 것입니다.

+0

OpenGL 3에 관해서는, 내가 만들고있는 소프트웨어가 2.1 만 지원하는 오래된 컴퓨터에서 실행되기 때문에 사용할 수 없습니다 ... 그래서 나는 다음과 같이해야합니다 : x = calc (long, lat, alt) ; y = calc (long, lat, alt); z = calc (long, lat, alt); 각 지점에 GL_STRIP_LINE을 그릴 수 있습니까? (나는 많은 것을 그리지 않기 때문에 나는 성능에 대해 걱정하지 않는다) – Lloyd0

0

궤적을 샘플링하면이를 GL_LINE_STRIP으로 그립니다.

다음은 몇 가지 중요한 정보입니다. OpenGL 고정 기능 매트릭스 스택 (glRotate, glTranslate, glScale 등)을 사용하지 마십시오. 실제 매트릭스 수학 라이브러리를 사용하면 작업하기가 번거롭고 작업이 훨씬 쉽습니다. 또한 고정 기능이 현대 OpenGL에서 제거되었습니다. 두 번째 충고로 나에게 : 즉각적인 모드 (glBegin ... glEnd)를 사용하지 말라. 그것은 성능 희생자이고 현대 OpenGL에서도 제거되었다.

+0

각 샘플을 x, y, z로 가져 오기 위해 몇 가지 계산을 수행하여 샘플링을합니까? (A)) opengl 3을 사용할 수 없습니다. 알고 계십니까? (OpenGL 3을 사용할 수 없습니다. 2.1을위한 좋은 수학 라이브러리? – Lloyd0

+0

@ Lloyd0 : 예, 정확하게 말합니다. 수학 라이브러리는 OpenGL과 독립적입니다. 일부는 OpenGL에 대한 편리한 인터페이스를 제공하지만 필수 항목은 아닙니다. 또한 glLoadMatrix를 사용하여 유니폼 대신 FFP 행렬 (모델 뷰, 프로젝션, 텍스처, 색상) 중 하나에 행렬을로드 할 수 있습니다. 그것은 GLM으로 잘 할 수 있습니다. – datenwolf

관련 문제