OpenGL의 좌표계, 진짜로 이해하기
·
Dev/Grapics
"왜 0, 0, 0에 두었는데 화면에 안 보일까? 1.  좌표계가 헷갈리는 이유OpenGL에서 처음 물체를 렌더링 할 때 이런 경험이 있다면 당신만 그런 게 아니다분명히 (0, 0, 0)에 모델을 뒀는데 화면에 아무것도 안 보인다.카메라는 설정했는데 방향이 어디를 보는지 감이 없다.gl_Position 계산했는데 화면이 시커멓다.이런 혼란의 원인은 대부분 좌표계와 변환에 대한 이해 부족이다.OpenGL에서의 렌더링은 단순한 그리기가 아니라,"모델의 좌표를 변환해 최종 스크린까지 도달시키는 여정"이다.2. 좌표계란 무엇인가?좌표계(Coordinate System)는 공간의 기준을 정의하는 약속이다.어디를 기준으로 (0, 0, 0)인지, 각 축이 어느 방향을 향하는지를 정의한다. OpenGL은 총 6단계의 ..
정점(Vertex)이란 무엇인가? - 그래픽 세계의 가장 작은 시작점
·
Dev/Grapics
1. 정점이라는 단어, 너무 자주 보인다컴퓨터 그래픽스를 막 시작하면 다음과 같은 단어들을 자주 보게 된다Vertex BufferVertex Shadergl_Positionlayout (location = x) 이 단어들은 모두 정점(Vertex)이라는 개념과 밀접하게 연결되어 있다.하지만 처음엔 너무 당연하다는 듯 쓰이기 때문에 "그래서... 정점이라는 게 도대체 뭐야?"라는 질문이 생기기 마련이다.2. 정점은 '점'이 아니다단어 뜻 그대로만 보면, 정점(Vertex)은 공간 위의 점 하나로 생각할 수 있다.하지만 그래픽에서의 정점은 단순한 위치 정보만 담고 있는 것이 아니다.정확히 말하자면, 정점은 '위치 + 속성 정보들'의 묶음이다. 예를 들어, 게임 캐릭터의 얼굴 한 지점은 단순히 (x,y,z) ..
렌더링 파이프라인: 그래픽이 만들어지는 과정
·
Dev/Grapics
1. glDrawElements() 또는 glDrawArrays() 줄 뒤에 무슨 일이?우리가 흔히 쓰는 glDrawElements()나 glDrawArrays() 같은 함수.이 한 줄의 호출 뒤에, 정확히 무슨 일이 벌어지고,어떻게 해서 한 줄의 코드가 화면에 그림을 그릴 수 있을까?2. 렌더링 파이프라인 전체 그림"정점 데이터가 픽셀이 되는 과정"  1. Vertex Specification (정점 입력)CPU가 넘겨준 정점 데이터를 GPU가 이해하도록 연결glVertexAttribPointer() 등을 통해 설정위치, 색상, 텍스처 좌표 등glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, po..
컴퓨터 그래픽스에서 말하는 '그래픽'이란 무엇인가?
·
Dev/Grapics
1. 그냥 "그림"이 아니다우리가 "컴퓨터 그래픽스"를 배운다고 할 때, "그래픽"은 도대체 뭘 말하는 걸까? 컴퓨터로 무언가를 그리고, 표현하고, 만들어내는 일을 통틀어 우리는 "그래픽스(Graphics)"라고 부른다.그런데 막상 그 그래픽이 구체적으로 뭘 말하는지 명확히 설명되지 않는 경우가 많다."그래픽이 중요해""GPU는 그래픽을 위해 존재해""셰이더는 그래픽을 조정하는 코드야"이렇게 말하긴 쉬운데, 정작 "그래픽"이 뭔지를 정확하게 묻는다면 우리는 뭐라고 대답할 수 있을까?2. 그래픽은 '시각적 정보'다컴퓨터 그래픽스에서 그래픽(Graphics) 이란렌더링(rendering) 과정을 통해 화면에 나타나는 모든 시각적 결과물을 의미한다. 이를 구성하는 대표적인 요소들은 다음과 같다요소설명정점 (V..