콘텐츠로 이동

henc · 디스플레이·렌더링

뷰 생성·삭제, 렌더링, 버퍼 스왑, 텍스처·업데이트 카운터

int hencCreate( HWND hwnd )
  • 지도 전시 대상 창에 대해서 사용될 정보인 HGLRC와 HDC를 생성한다.
  • OpenGL API 사용을 위해서는 반드시 전시 대상창이 있어야만 한다.
  • 모든 전시와 관련된 API는 함수를 통해 전시 준비를 하여야 하며, 사용 전에는 반드시 함수를 사용 후에 호출해야 한다.
  • 복수의 창에서 전시하는 경우에는 함수로 전시할 창을 구분한다. 그러나 전시 설정은 단일 설정으로 동작하며, 각 창별로 따로 설정할 수는 없다. 예를 들면 지도의 축척, 중심 위경도는 1 개의 상태값 만 있으며, 각 창과는 독립적이다.

HWND : IN (전시 대상 창)

= 0 : 성공. < 0 : 실패


int hencDelete( HWND wnd )

지도 전시 대상 창에 대해서 사용될 정보인 HGLRC와 HDC를 제거한다.

HWND : IN (전시 대상 창)

= 0 : 성공. < 0 : 실패


HGLRC hencGetGLRC( HWND hwnd )

지정 창에 해당되는 HGLRC를 획득한다.

HWND : IN (전시 대상 창)

!= NULL : HGLRC == NULL : 실패 (전시 대상 창 정보가 없음)


HDC hencGetDC( HWND hwnd )

지정 HWND 창에 사용되는 HDC를 획득한다.

HWND : IN (전시 대상 창)

!= NULL : HDC == NULL : 실패 (전시 대상 창 정보가 없음)

HDC hencGetDC()

현재 전시 창에 사용되는 HDC를 획득한다.

없음

!= NULL : HDC == NULL : 실패 (현재 전시 대상 창 없음)


int hencSelect( HWND hwnd )

지도 전시 대상 창을 지정한다.

HWND : IN (전시 대상 창)

= 0 : 성공 < 0 : 실패


HWND hencGetHwnd( )

설정된 전시 대상 창의 윈도우 핸들을 획득한다.

없음

!= NULL : HWND (전시 대상 창 핸들) == NULL : 실패 (전시 대상 창 없음)


int hencClearBackground()

현재 선택된 전시 창에 전체 OpenGL 전시 버퍼를 지운다. 따라서, 이전에 그려진 지도 내용이 삭제되어서 재사용할 수 없게 된다. OpenGL의 전시 버퍼 만을 지우는 기능이므로 현재 창의 화면에는 영향이 없다. 함수가 필요

없음

= 0 : 성공 < 0 : 실패


int hencSetViewport( int x, int y, int w, int h )

전시 버퍼의 지도 영역을 지정한다. hencSelect() 함수가 필요

int x : IN (WinPos, 윈도우 좌표계, 전시 영역 좌측 상단 지정) int y : IN (WinPos, 윈도우 좌표계, 전시 영역 좌측 상단 지정) int w : IN (WinPos, 윈도우 좌표계, 전시 영역 폭 지정) int h : IN (WinPos, 윈도우 좌표계, 전시 영역 높이 지정)

= 0 : 성공 < 0 : 실패


int hencClearViewport()

전시 버퍼의 지도 영역만을 삭제한다. 함수가 필요

없음

= 0 : 성공 < 0 : 실패


int hencRender()
  • 전시 버퍼의 지도 영역에 지도를 그린다. 현재의 설정에 맞게 전 지도를 그린 후에 Return하는 함수로서, 지도의 용량에 따라 긴 시간이 소요될 수 있다. 이는 버퍼에만 그려지며 실제 화면에는 나타나지 않는다.
  • 화면 표시 함수를 호출한 후에 실제로 화면에 나타나게 된다.
  • 함수가 필요

없음

  • = 0 : 성공
  • < 0 : 실패

int hencRenderWaitFinish()
  • OpenGL의 특성상 버퍼에 그린 후 곧바로 그림이 완성되지는 않기 때문에 일정한 시간 동안 대기가 필요하다. 이는 그림이 완성될 때까지 대기를 하기 위한 함수이다. 대부분의 경우 이 함수의 사용이 불필요하다.
  • 함수가 필요

없음

  • = 0 : 성공
  • < 0 : 실패

int hencRenderReset()
  • 부분적인 그리기를 준비한다. 함수와는 다르게 전시 준비만 수행한다.
  • 함수가 필요

없음

  • = 0 : 성공
  • < 0 : 실패

int hencRenderMore()
  • 전체 지도 그리기 과정 중 하나의 요소 만을 그린다. 즉, 부분 그리기를 제공하기 때문에 단 시간에 결과가 리턴된다. 이 함수를 반복하여 호출하면 전체 그리기 과정을 순차적으로 진행, 완료할 수 있다.
  • , 함수가 필요

없음

  • 0 : 하나의 요소 그리기 성공 (더 그릴 요소가 남아 있는 경우)

  • = 0 : 하나의 요소 그리기 성공 (전체 그리기 완료된 경우)
  • < 0 : 실패

int hencRenderStop()
  • 부분 그리기 과정을 중단하고, 과정 중 생성된 임시 정보들을 삭제한다.
  • 지도 버퍼에는 미 완성된 지도 그림이 남아있게 된다.
  • , 함수가 필요

없음

  • = 0 : 성공

  • < 0 : 실패

int hencRenderMoreTimed( DWORD msec = 100 )
  • hencRenderMore()와 동작은 동일하나 일정한 시간 동안에 다수의 요소를 그리도록 하는 함수이다. 지정된 시간 이상을 경과하면 함수는 자동 리턴된다.
  • , 함수가 필요

없음

  • 0 : 하나의 요소 그리기 성공 (더 그릴 요소가 남아 있는 경우)

  • = 0 : 하나의 요소 그리기 성공 (전체 그리기 완료된 경우)
  • < 0 : 실패

int hencSwapBuffer()
  • 전시 버퍼의 내용을 화면에 표시한다. 이 함수는 OpenGL의 특성을 이용하는 것으로, 실제 화면 상에 표시되는 것은 함수가 리턴되는 시점 이후에 이루어지는 비동기 함수이다. 따라서 CPU를 좀 더 활용할 수 있기 때문에 성능 향상에는 도움이 된다. 그러나, 창에 HDC를 이용해 그리기는 할 경우에는 원치 않는 결과가 발생될 수 있음을 주의해야 한다.
  • 이 함수가 호출되는 경우, 전시 버퍼에는 지도 내용이 남아 있지 않거나 잘못된 것이 남아 있을 수 있다. 이는 OpenGL 디바이스 드라이버에 따라 다를 수도 있으며, 일반적으로는 지도의 내용이 남아 있지 않는다.
  • 함수가 필요
  • 전체 지도 그리기 또는 부분 지도 그리기 과정 이후에 사용 가능
  • 전체 지도 그리기 :
  • 부분 지도 그리기 : , , 등

없음

  • = 0 : 성공
  • < 0 : 실패

int hencCopyBuffer()
  • 전시 버퍼 내용을 화면에 복사한다. 이 함수는 전시 버퍼의 내용은 그대로 보존하면서 복사하여 화면에 표시하기 위한 것으로서 OpenGL 전시가 완료될 때까지 대기한 후에 복사를 수행하는 동기 함수이다.
  • OpenGL 전시가 완료될 때까지 대기한 후에 복사를 수행하는 동기 함수이다. 전시가 완료되기를 대기하므로 에 비해 상대적으로 CPU 활용도는 떨어지지만, 이후 전시 화면에 HDC를 사용해서 그리기를 할 수 있다.
  • 이 함수를 호출한 후에도 전시 버퍼에는 이전 지도의 내용이 그대로 남아 있게 된다.
  • 함수가 필요
  • 전체 지도 그리기 또는 부분 지도 그리기 과정 이후에 사용 가능
  • 전체 지도 그리기 :
  • 부분 지도 그리기 : , , 등

없음

  • = 0 : 성공
  • < 0 : 실패

bool hencEncfileIsRendered( int no )

특정 ENC 파일이 현재 화면에 일부라도 표시되고 있는지 여부를 판정한다.

  • 지도셀은 로드되는 순서대로 0번부터 번호가 부여된다.
  • true : 일부 또는 전체가 화면에 표시되고 있음을 의미
  • false : 화면 영역에 포함되지 않음을 의미

GLuint hencCaptureMapTexture( GLuint texture = 0 )
  • 현재 지도 전시를 위한 버퍼 전체의 내용을 텍스처로 만든다.
  • Texture 번호가 0인 경우, 새로 생성
  • Texture 번호가 0이 아닌 경우, 주어진 Texture 번호를 재사용

GLuint texture : IN (OpenGL Texture 이름)

OpenGL Texture 이름


void hencRenderMapTexture( GLuint tex )

이전에 보관해 둔 지도 전시를 위한 버퍼 저장 Texture를 이용해서 화면에 지도를 도시한다. 캡쳐할 당시와 동일은 창이고 창 크기의 변화가 없는 경우에만 정상적으로 그려지게 된다.

GLuint texture : IN (OpenGL Texture 이름)

없음


DWORD hencGetMapUpdateCounter()
  • 현재창에 대한 변경사항 카운터 값을 획득한다.
  • 변경사항 카운터 값을 클리어(clear) 한 후 전시 버퍼를 새로 그려야 하는 설정의 변경사항을 확인할 수 있는 카운터 값이다.
  • 이 값은 개별창을 기준으로 전시 버퍼에 대한 변동치 값이다.
  • 지도 설정이 바뀔 경우에는 모든 전시창의 변동치 값이 올라가고,
  • 개별창의 전시 설정이 바뀔 경우에는 해당하는 창의 변동치 값만 올라간다.
  • 단일 Viewport에 대해서만 유효한 값이며, 다수의 Viewport인 경우에는 직접 변동 여부를 확인해야 한다.

없음

변경사항 카운터 값


void hencClearMapUpdateCounter()

현재창에 대한 변경사항 카운터 값을 지운다.

없음

없음


void hencIncMapUpdateCounter()

수동으로 현재창에 대한 변경사항이 있음을 표시한다.

없음

없음


void hencIncMapUpdateCounterAll()

수동으로 전체창에 대한 변경사항이 있음을 표시한다.

없음

없음


void hencClearMapUpdateCounterAll()

모든 창에 대한 변경사항 카운터를 지운다.

없음

없음