일반적으로 사용되는 OpenGL 함수 소개(함수 정의)
OpenGL 함수 라이브러리와 관련된 API에는 코어 라이브러리(gl), 유틸리티 라이브러리(glu), 보조 라이브러리(aux), 유틸리티 라이브러리(글루), 윈도우 라이브러리(glx, agl, wgl) 및 확장 기능이 포함됩니다. 함수 라이브러리 등 그림 1에서 볼 수 있듯이 gl은 코어이고 glu는 gl의 부분 캡슐화입니다. glx, agl 및 wgl은 다양한 창 시스템에 대한 함수입니다. glu는 aux보다 더 강력한 크로스 플랫폼 OpenGL 프로그램을 위한 툴킷입니다. 확장 기능 라이브러리는 OpenGL 확장 메커니즘을 사용하여 하드웨어 업데이트를 구현하기 위해 하드웨어 제조업체에서 개발한 기능입니다. 이러한 라이브러리는 아래에 자세히 소개되어 있습니다.
1. OpenGL 코어 라이브러리 코어 라이브러리에는 115개의 함수가 포함되어 있으며 함수 이름의 접두사는 gl입니다. 이 기능 부분은 일반적인 핵심 그래픽 처리에 사용됩니다. 이 함수는 gl.dll에 의해 해석되고 실행됩니다. 많은 함수가 다음 범주의 서로 다른 번호를 받을 수 있기 때문입니다. 유형의 매개변수에 따르면 300개 이상의 파생 함수 프로토타입이 있습니다. 핵심 라이브러리의 함수는 주로 다음과 같은 함수 범주로 나눌 수 있습니다:
(1) 기본 기하학적 프리미티브를 그리는 함수. 그리기 프리미티브 glBegain(), glEnd(), glNormal*(), glVertex*() 기능과 같은 기능입니다.
(2) 행렬 연산, 기하학적 변환 및 투영 변환의 기능. 행렬 푸시 함수 glPushMatrix(), 행렬 팝 함수 glPopMatrix(), 로드 행렬 함수 glLoadMatrix(), 행렬 곱셈 함수 glMultMatrix(), 현재 행렬 함수 glMatrixMode() 및 행렬 정규화 함수 glLoadIdentity(), 기하학적 변환 함수 glTranslate *( ), glRotate*() 및 glScale*(), 투영 변환 함수 glOrtho(), glFrustum() 및 뷰포트 변환 함수 glViewport() 등
(3) 색상, 조명 및 재료의 기능. 색상 모드 함수 glColor*(), glIndex*() 설정, 조명 효과 함수 glLight*(), glLightModel*() 설정, 재질 효과 함수 glMaterial() 설정 등이 있습니다.
(4) 표시 목록 함수에는 주로 표시 목록을 생성, 종료, 생성, 삭제 및 호출하는 함수 glNewList(), glEndList(), glGenLists(), glCallList() 및 glDeleteLists()가 포함됩니다.
(5) 텍스처 매핑 함수, 주로 1차원 텍스처 함수 glTexImage1D(), 2차원 텍스처 함수 glTexImage2D(), 텍스처 매개변수, 텍스처 환경 및 텍스처 좌표를 설정하는 함수 glTexParameter*(), glTexEnv *( ) 및 glTetCoord*() 등
(6) 특수 효과 기능. 융합 함수 glBlendFunc(), 앤티앨리어싱 함수 glHint() 및 안개 효과 glFog*().
(7) 래스터화 및 픽셀 작업 기능. 픽셀 위치 glRasterPos*(), 선 너비 glLineWidth(), 다각형 그리기 모드 glPolygonMode(), 픽셀 읽기 glReadPixel(), 픽셀 복사 glCopyPixel() 등.
(8) 선택 및 피드백 기능. 주로 렌더링 모드인 glRenderMode(), 선택 버퍼 glSelectBuffer() 및 피드백 버퍼 glFeedbackBuffer() 등이 있습니다.
(9) 곡선 및 표면 그리기 기능.
곡선이나 표면을 생성하는 glMap*() 및 glMapGrid*() 함수와 평가자 함수 glEvalCoord*() glEvalMesh*().
(10) 상태 설정 및 조회 기능. 주로 glGet*(), glEnable(), glGetError() 등을 포함합니다.
2. OpenGL 유틸리티 라이브러리(GLU)에는 43개의 함수가 포함되어 있으며 함수 이름 앞에는 glu가 붙습니다. OpenGL은 강력하지만 소수의 그리기 명령을 제공하며 더 복잡한 그리기는 모두 점에서 시작해야 합니다. 선과 표면으로 시작하세요. 과도한 프로그래밍 작업을 줄이기 위해 Glu는 OpenGL 기능을 캡슐화하여 개발자에게 비교적 간단한 사용법을 제공하고 핵심 라이브러리의 기능을 호출하여 좀 더 복잡한 작업을 구현합니다. 이 함수는 glu.dll에 의해 해석되고 실행됩니다. OpenGL의 핵심 라이브러리와 유틸리티 라이브러리는 모든 OpenGL 플랫폼에서 실행될 수 있습니다. 주로 다음 유형을 포함합니다:
(1) gluScaleImage(), gluBuild1Dmipmaps(), gluBuild2Dmipmaps()를 포함한 보조 텍스처 매핑 함수.
(2) 좌표 변환 및 투영 변환 함수, 투영 모드 함수 gluPerspective(), gluOrtho2D(), gluLookAt() 정의, 투영 보기 볼륨 함수 gluPickMatrix() 선택, 투영 행렬 gluProject 계산 () 및 gluUnProject() 등.
(3) gluNewTess(), gluDeleteTess(), gluTessCallback(), gluBeginPolygon() gluTessVertex(), gluNextContour(), gluEndPolygon() 등을 포함한 다각형 모자이크 도구
(4) 주로 gluNewQuadric(), gluSphere(), gluCylinder(), gluDisk(), gluPartialDisk(), gluDeleteQuadric() 등을 포함한 2차 표면 그리기 도구.
(5) gluNewNurbsRenderer(), gluNurbsCurve(), gluBeginSurface(), gluEndSurface(), gluBeginCurve(를 포함하여 Nurbs 곡선과 표면을 정의하고 그리는 데 주로 사용되는 비균일 유리 B-스플라인 그리기 도구 ) , gluNurbsProperty() 및 기타 함수.
(6) 오류 피드백 도구는 gluErrorString() 오류 정보 문자열을 얻습니다.
3. OpenGL 보조 라이브러리에는 31개의 함수가 포함되어 있으며 함수 이름 접두사는 aux입니다. 이 기능 부분은 창 관리, 입력 및 출력 처리, 간단한 3차원 개체 그리기를 제공합니다. 이 함수는 glaux.dll에 의해 해석되고 실행됩니다. 보조 라이브러리는 OpenGL 프로그램을 학습하고 작성하기 위해 만들어졌으며 아이디어 테스트를 위한 준비 기반 인수에 가깝습니다. Aux 라이브러리의 Windows 구현에는 많은 버그가 있으므로 쉽게 충돌이 자주 발생할 수 있습니다. 크로스 플랫폼 프로그래밍 예제 및 데모에서 aux는 대부분 글루 라이브러리로 대체되었습니다. OpenGL의 보조 라이브러리는 모든 OpenGL 플랫폼에서 실행되지 않습니다. 보조 라이브러리 함수에는 주로 다음 범주가 포함됩니다:
(1) 창 초기화 및 종료 함수, auxInitDisplayMode() 및 auxInitPosition().
(2) 창 처리 및 시간 입력 함수, auxReshapeFunc(), auxKeyFunc() 및 auxMouseFunc().
(3) 색상 인덱스 로딩 함수, auxSetOneColor().
(4) 3차원 객체 렌더링 기능. 드로잉 큐브 auxWireCube() 및 auxSolidCube()와 같은 두 가지 형태의 메시 본체와 솔리드 본체를 포함합니다. 여기서는 메시를 예로 들어 입방체 auxWireBox(), 환형 표면 auxWireTorus(), 원통형 auxWireCylinder(), 정이십면체 auxWireIcosahedron(), 팔면체 auxWireOctahedron(), 사면체 auxWireTetrahedron() 및 정십이면체 auxWireDidecahedron()을 사용합니다. ( ), 원뿔형 auxWireCone() 및 주전자 auxWireTeapot().
(5) 백그라운드 프로세스 관리 함수 auxIdleFunc().
(6) 프로그램은 auxMainLoop() 함수를 실행합니다.
4. OpenGL Utility Toolkit에는 약 30개의 함수가 포함되어 있으며 함수 이름 앞에는 glu가 붙습니다. Glut는 윈도우 플랫폼에 의존하지 않는 OpenGL 툴킷으로 SGI(현재 Nvidia)의 Mark KLilgrad가 다양한 윈도우 플랫폼 API의 복잡성을 숨기기 위해 작성했습니다. 이 함수는 aux 라이브러리에 대한 보다 강력한 대체 기능으로 시작되며 Glut.dll은 이 함수를 해석하고 실행하는 역할을 합니다. 글루의 창 관리 기능은 실행 환경에 의존하지 않기 때문에 OpenGL의 도구 라이브러리는 X-Window, Windows NT, OS/2 및 기타 시스템에서 실행될 수 있으며 특히 필요하지 않은 OpenGL 샘플 프로그램을 개발하는 데 적합합니다. 복잡한 인터페이스. 숙련된 프로그래머의 경우 글루는 일반적으로 3D 그래픽 코드를 완전한 애플리케이션에 통합하기 전에 정리하는 데 사용됩니다. 이 기능 부분에는 주로 다음이 포함됩니다:
(1) 창 작업 기능, 창 초기화, 창 크기, 창 위치 및 기타 기능 gluInit() gluInitDisplayMode() gluInitWindowSize() gluInitWindowPosition() 등
(2) 콜백 함수. 새로 고침 메시지, 키보드 메시지, 마우스 메시지, 타이머 기능 등에 응답합니다. GlutDisplayFunc() 글루포스트Redisplay() 글루ReshapeFunc() 글루타이머Func() 글루키보드Func() 글루마우스Func().
(3) 복잡한 3차원 개체를 만듭니다. 이는 aux 라이브러리와 동일한 기능을 갖습니다. 메쉬와 솔리드 바디를 생성합니다. 글루솔리드스피어(), 글루와이어스피어() 등 여기에는 더 이상 설명이 없습니다.
(4) 메뉴 기능. 추가 메뉴 함수 GlutCreateMenu(), gluSetMenu(), gluAddMenuEntry(), gluAddSubMenu() 및 gluAttachMenu()를 생성합니다.
(5) 프로그램 실행 함수, lutMainLoop().