버텍스(Vertex)
3D 모델의 한 점을 나타내는 좌표이다. 버텍스는 X, Y, Z 좌표로 구성됨
폴리곤(Polygon)
OpenGL에서 "폴리곤(Polygon)"은 2D 또는 3D 공간에서 도형을 구성하는 다각형을 의미합니다. 폴리곤은 선분으로 연결된 여러 개의 정점(Vertex)으로 구성됩니다. 즉 최소 세개이상의 버텍스가 필요합니다.
버퍼(Buffer)
데이터를 저장하는 메모리 영역을 말합니다. OpenGL에서는 버텍스 데이터, 인덱스 데이터 등을 저장하기 위해 버퍼를 사용합니다.
셰이더(Shader)
그래픽 처리의 핵심 요소로, 버텍스 셰이더(Vertex Shader)와 프래그먼트 셰이더(Fragment Shader)로 구성됩니다.
버텍스 셰이더는 버텍스의 위치와 속성을 계산하고
프래그먼트 셰이더는 버텍스 색상을 계산합니다.
프로그램(program)
쉐이더의 집합. 여러개의 쉐이더를 모아서 glLinkProgram메소드를 호출하면 쉐이더들이 연결된다.
즉 쉐이더란 작은연산 단위이고, 이 쉐이더가 모여서 프로그램이 된다.
프리미티브(Primitive)
OpenGL에서 그리기 작업을 수행하기 위해 사용되는 기본 도형입니다. 주요한 프리미티브 종류로는 포인트(Point), 선(Line), 삼각형(Triangle) 등이 있습니다.
텍스처(Texture)
2D 또는 3D 이미지를 표현하기 위해 사용되는 데이터입니다. 텍스처는 이미지 데이터를 저장하고, 이를 객체에 적용하여 렌더링할 수 있습니다.
프레임 버퍼(Frame Buffer)
화면에 그려지는 이미지를 저장하는 버퍼입니다. 화면에 렌더링되기 전에 임시로 그림을 저장하고, 완전한 이미지가 준비되면 화면에 표시됩니다.
변환(Transform)
객체의 위치, 크기, 회전 등을 변경하는 작업입니다. 변환은 모델 변환(Model Transformation), 뷰 변환(View Transformation), 투영 변환(Projection Transformation) 등의 단계로 이루어집니다.
VAO(Vertext Array Object)
버텍스 데이터 배열을 관리하는 객체입니다. VAO는 버퍼와 버텍스 속성(버텍스 위치, 텍스처 좌표 등)을 연결하여 그리기 작업에 필요한 데이터를 제공합니다.
VBO(Vertex Buffer Object)
버텍스 데이터를 저장하는 버퍼입니다. VBO는 GPU에 버텍스 데이터를 전송하여 그래픽 처리에 사용됩니다.
인덱스 버퍼(Index Buffer)
버텍스 데이터를 인덱스로 참조하여 그리기 작업을 수행하는 버퍼입니다. 인덱스 버퍼를 사용하면 중복된 버텍스 데이터를 효율적으로 저장할 수 있습니다.
opengl프로그래밍의 일반적인 흐름
1.초기화
OpenGL을 사용하기 전에 초기화 단계가 필요합니다. 이 단계에서는 OpenGL 컨텍스트를 생성하고 필요한 라이브러리를 초기화합니다. 또한, 필요한 리소스를 로드하고 초기 상태를 설정하는 등의 작업을 수행합니다.
2. 셰이더(Shader) 컴파일과 링크
그래픽스 파이프라인을 제어하는 셰이더를 작성하고, 컴파일 및 링크하여 프로그램을 생성합니다. 버텍스 셰이더와 프래그먼트 셰이더는 최소한 하나씩 필요하며, 필요에 따라 지오메트리 셰이더, 테셀레이션 셰이더 등을 사용할 수도 있습니다.
3. 버퍼 생성과 데이터 전송
그래픽스 객체의 데이터를 저장하기 위해 버퍼(Buffer)를 생성하고 데이터를 전송합니다. 버텍스 데이터, 텍스처 데이터, 인덱스 데이터 등을 버퍼에 저장하여 GPU로 효율적으로 전달합니다.
4. 렌더링 루프
메인 렌더링 루프를 실행하여 반복적으로 그래픽스를 업데이트하고 렌더링합니다. 이 단계에서는 필요한 변환, 셰이딩, 텍스처 매핑 등의 작업을 수행하여 화면에 그래픽스를 그립니다.
5. 이벤트 처리
사용자 입력, 창 크기 변경 등의 이벤트를 처리합니다. 이벤트에 따라 뷰 변환, 프로젝션 변환 등을 업데이트하거나, 객체의 상태를 변경할 수 있습니다.
6. 종료
프로그램이 종료되거나 OpenGL 컨텍스트를 정리하는 단계입니다. 할당된 리소스를 해제하고 OpenGL 컨텍스트를 제거합니다.
댓글