정점(Vertex)이란 무엇인가? - 그래픽 세계의 가장 작은 시작점

2025. 4. 8. 07:00·Dev/Grapics

1. 정점이라는 단어, 너무 자주 보인다

컴퓨터 그래픽스를 막 시작하면 다음과 같은 단어들을 자주 보게 된다

  • Vertex Buffer
  • Vertex Shader
  • gl_Position
  • layout (location = x)

 

이 단어들은 모두 정점(Vertex)이라는 개념과 밀접하게 연결되어 있다.

하지만 처음엔 너무 당연하다는 듯 쓰이기 때문에

 

"그래서... 정점이라는 게 도대체 뭐야?"
라는 질문이 생기기 마련이다.

2. 정점은 '점'이 아니다

단어 뜻 그대로만 보면, 정점(Vertex)은 공간 위의 점 하나로 생각할 수 있다.

하지만 그래픽에서의 정점은 단순한 위치 정보만 담고 있는 것이 아니다.

정확히 말하자면, 정점은 '위치 + 속성 정보들'의 묶음이다.

 

예를 들어, 게임 캐릭터의 얼굴 한 지점은 단순히 (x,y,z) 위치 외에도

  • 거기에 어떤 색상이 칠해져야 하는지
  • 어떤 텍스처 좌표(UV)를 갖는지
  • 빛에 어떻게 반응해야 하는지(Normal)

등의 정보가 모두 하나의 정점 데이터에 포함되어 있어야한다.

 

일반적으로 하나의 정점은 다음 정보를 포함하고 있다

구성 요소 설명
위치(Position) 3D 공간상의 좌표 (x,y,z)
색상(Color) RGB 또는 RGBA
텍스쳐 좌표(UV) 이미지 매핑 좌표
노멀 벡터(Normal) 조명 계산용 방향 백터
접선(Tangent) (선택적) 고급 조명 계산용

3. 정점 -> 삼각형 -> 메시(mesh)

그래픽에서 도형은 정점으로부터 만들어진다.

  • 정점 3개를 연결하면 삼각형
  • 삼각형 수십 개가 모이면 메시(Mesh)
  • 메시 수백 개가 모이면 모델(Model)

PolyGon Mesh

정점만 있어서는 아무것도 보이지 않지만,

정점을 조합하면 도형이 되고, 도형은 결국 화면에 보이는 모든 3D 그래픽의 기반이 된다.


4. 렌더링 파이프라인에서의 정점

정점은 GPU의 렌더링 파이프라인에서 가장 먼저 처리되는 단위다.

즉, 정점이 없으면 렌더링 자체가 시작될 수 없다.

단계 정점의 역할
Vertex Specification 정점 데이터를 CPU -> GPU로 전달
Vertex Shader 좌표 변환 수행 (모델 좌표 -> 클립 공간)
Primitive Assembly 정점 3개를 삼각형으로 묶음
Rasterization 정점 간의 값 (색상, UV 등)을 보간하여 픽셀 생성

 

이 괴정을 통해 정점은 위치 정보만 전달하는 것이 아니라,

그래픽 전체에 영향을 주는 주요 정보 전달자 역할을 하게 된다.


5. 실용적인 예: 정점 구조체

struct Vec3{
    float x;
    float y;
    float z;
};

struct Vec2{
    float x;
    float y;
};

struct Vertex{
    Vec3 position;	// 위치
    Vec3 normal;	// 조명 계산용 방향 벡터
    Vec2 texCoord;	// 텍스처 좌표
    Vec3 color;		// 정점 색상
};

 

이 구조체를 std::vector <Vertex> 등에 담아 VBO(Vertex Buffer Object)로 넘기고,

셰이더에서는 각 속성을 layout(location = x)로 받아 처리한다.

 

이렇게 정점 데이터가 그래픽 파이프라인에 연결되면,

하나의 정점이 단순한 점을 넘어 화면 위 픽셀 색상까지 영향을 주는 데이터 단위가 된다.


6. 왜 정점이 중요한가?

정점은 모든 그래픽 정보의 시작이다.

  • 정점이 없다면 도형이 만들어질 수 없다.
  • 정점이 많을수록 더 정밀한 메시와 부드러운 곡선 표현이 가능하다.
  • 조명 효과, 그림자, 텍스처 표현 등도 정점 간 정보 보간을 통해 자연스럽게 처리된다.

하지만 너무 많은 정점은 GPU에 부담을 주기 때문에,

정점 데이터 최적화(예: LOD, 정점 캐시 등)는 실전 렌더링에서 굉장히 중요한 요소다.


7. 요약

항목 설명
정점이란? 위치 + 다양한 그래픽 속성 정보
어디 쓰이나? 모든 그래픽 렌더링의 시작점
어떻게 구성? 구조체 -> VBO -> VAO -> 셰이더
왜 중요? 그래픽 품질, 최적화, 보간 전부에 영향

9. 참고 자료

• LearnOpenGL - Vertex Specification

• OpenGL Wiki - Vertex Specification

• GPU Gems 3 - Efficient Vertex Data

'Dev > Grapics' 카테고리의 다른 글

Rasterization vs Ray Tracing  (0) 2025.04.09
셰이더는 그낭 함수일까?  (0) 2025.04.08
OpenGL의 좌표계, 진짜로 이해하기  (1) 2025.04.08
렌더링 파이프라인: 그래픽이 만들어지는 과정  (0) 2025.04.07
컴퓨터 그래픽스에서 말하는 '그래픽'이란 무엇인가?  (2) 2025.04.07
'Dev/Grapics' 카테고리의 다른 글
  • 셰이더는 그낭 함수일까?
  • OpenGL의 좌표계, 진짜로 이해하기
  • 렌더링 파이프라인: 그래픽이 만들어지는 과정
  • 컴퓨터 그래픽스에서 말하는 '그래픽'이란 무엇인가?
onepaperhoon
onepaperhoon
한장훈님의 블로그 입니다.
  • onepaperhoon
    OnePaperHoon Blog
    onepaperhoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (14)
      • Dev (14)
        • System Programming (2)
        • Linux (0)
        • CS (0)
        • Network, Protocol (0)
        • Grapics (11)
        • Web, App (0)
        • Design Pattern (1)
      • Projects (0)
      • TIL (0)
      • Life (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Vertex Shader
    shader
    디자인 패턴
    공유 메모리
    cpp
    싱글톤 패턴
    Game
    graphicapi
    3d
    shared memory
    C언어
    c++
    IPC
    graphics
    Process
    named pipe
    glfw
    Pipe
    OpenGL
    그래픽스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
onepaperhoon
정점(Vertex)이란 무엇인가? - 그래픽 세계의 가장 작은 시작점
상단으로

티스토리툴바