그래픽스/opengl(6)
-
[learn-OpenGL] Transformations
벡터, 내적, 외적, 행렬 은 생략 1. 그래픽스 변환 1) 강체 변환(rigifbody transformation) = 이동변환 + 회전변환 = 모습은 불변 2) 유사변환(similarity transformation) = 강체변환 + 균등크기조절변환 + 반사변환 = 물체사이의 각이 유지 = 물체내부 정점간의 거리가 일정한 비율로 유지 3) 어파인 변환(affine transformation) = 유사변환 + 차등 크기조절 + 전단 : 물체의 타입이 유지, 변환행렬의 마지막 행이 (0, 0, 0, 1) 4) 원근 변환(perspective transformation) = 평행선이 만남, 소실점에서 만남, 마지막행이 (0, 0, 0, 1) 이 아님 5) 선형 변환(linear transformation)..
2021.07.26 -
[learn-OpenGL] Textures
1. Textures = 각 모델에는 더많은 vertex들이 필요, 각 vertex는 컬러 attributes이 필요 => 오버헤드 = 텍스처 : 2D, 1D, 3D image = vertex를 추가하지 않아도 오브젝트가 매우 세밀하게 묘사된것처럼 = 텍스쳐는 많은 양의 데이터를 저장하여 shader에 보낼 수 있음. 삼각형에 매핑 = 각 vertex에 텍스처의 어느 부분이 해당하는지 알려주어야함. = 각 vertex에는 샘플링할 texture coorfinate 가 있어야함 = fragment 보간을 통해 텍스처 좌표 를 보간 텍스처 좌표의 범위 = x와 y축상의 0~1 = 텍스쳐 좌표를 사용하여 텍스쳐 컬러를 가져오는것을 sampling이라고 함. = 좌측하단 vertex : (0, 0) = 우측하단..
2021.07.25 -
[learn-OpenGL] Shaders
1. Shaders = GPU에서 동작하는 프로그램 (little programs tat rest on the GPU) = 파이프라인 각 단계마다 사용되는 shader가 다름 = shader는 입력값을 출력값으로 변환시키는 프로그램으로 아주 독립적인(isolated) 프로그램 = 서로 통신할 수 없음. 유일한 comunication은 입력값과 출력값을 통해서하는것 2. GLSL = Shader는 C언어와 비슷한 GLSL로 작성한다. = GLSL is tailored for use with graphics and contains useful features : vector + matrix manipulation. = 항상 버전 선언으로 시작 = 그다음으로 입력 변수와 출력변수들이 나오게됨 = uniform..
2021.07.24 -
[learn-OpenGL] Triangle
LearnOpenGL - Hello Triangle 1. 쉐이더 그리팩 파이프라인의 두가지 부분 => 3D -> 2D | 2D -> 화소픽셀 그래픽 파이프라인의 입력 : 3D 좌표 => 여러단계를 거침 => 각 단계는 전 단계의 결과를 입력으로. => 모든 단계는 특성화됨 => 병렬로 실행됨 => 각 단계에서 GPU 위에 작은 프로그램들을 실행시킴 => 데이터를 빠르게 처리 (GPU의 수많은 작은 프로세싱 코어들) => 이런 작은 프로그램들이 바로 shader 쉐이더 = 존재하는 기본 쉐이더를 대체할 수 있음 = 설정가능한 쉐이더 : 파이프라인의 특정한 부분을 좀 더 세밀한 조작을 가능하게함. = GPU 위에 실행 => CPU 시간을 절역 => OpenGL Shading Language (GLSL) 그래..
2021.07.23 -
[learn-OpenGL] Window 창
LearnOpenGL - Hello Window LearnOpenGL - Hello Triangle 1. window 창 1) 헤더 파일 #include #include #include 2) GLFW 초기화, 설정 int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); return 0; } 메인 함수에서 glfwInit 로 GLFW 초기화 g..
2021.07.22 -
[learn-OpenGL] Introduction : OpenGL
LearnOpenGL - Introduction LearnOpenGL - OpenGL 1. OpenGL immediate mode (fixed function pipeline) - 예전에 쓰였던 방식 - 대부분 기능이 내부에 숨겨져있음, 내부에서 작동확인 어려움 - 그대신 사용하기 쉽고 이해하기 쉬움 - 그러나 비효율적 - OpenGL 3.2 이후 core-profile mode core-profile mode - 최신 기술(modern practices)을 사용하도록 유도 (deprecated functions 사용시 정지) - 따라서 배우기 어려움. - 하지만 매우 유연하고 효율적 - 내부에서의 동작을 확인하기 쉬워짐 OpenGL 3.3버전 을 배우는 이유 : 이후버전은 기능이 추가되거나 함수가 더 ..
2021.07.22