그래픽스/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 Triangle1. 쉐이더 그리팩 파이프라인의 두가지 부분=> 3D -> 2D | 2D -> 화소픽셀 그래픽 파이프라인의 입력 : 3D 좌표=> 여러단계를 거침=> 각 단계는 전 단계의 결과를 입력으로.=> 모든 단계는 특성화됨=> 병렬로 실행됨=> 각 단계에서 GPU 위에 작은 프로그램들을 실행시킴=> 데이터를 빠르게 처리 (GPU의 수많은 작은 프로세싱 코어들)=> 이런 작은 프로그램들이 바로 shader 쉐이더= 존재하는 기본 쉐이더를 대체할 수 있음= 설정가능한 쉐이더 : 파이프라인의 특정한 부분을 좀 더 세밀한 조작을 가능하게함.= GPU 위에 실행 => CPU 시간을 절약=> OpenGL Shading Language (GLSL)그래픽 파이프라인= 많은 일..
2021.07.23 -
[learn-OpenGL] Window 창
LearnOpenGL - Hello WindowLearnOpenGL - Hello Triangle OpenGL은 표준/사양일 뿐- 드라이버에 사양을 구현해야함 (특정 그래픽카드가 지원하는)- OpenGL 드라이버는 버전이 다양함, 함수의 위치는 컴파일 타임에 알 수 없음 -> 런타임에 쿼리해야함- 필요한 함수의 위치를 검색해서 나중에 사용할 수 있도록 함수 포인터에 저장해야함 // define the function's prototypetypedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);// find the function and assign it to a function pointerGL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)..
2021.07.22 -
[learn-OpenGL] Introduction : OpenGL
LearnOpenGL - Introduction LearnOpenGL - OpenGL1. OpenGL OpenGL은 API로 간주되나, 단지 스펙임 (Khronos Group 에서 개발하고 유지관리하는)- 스펙은 각 함수가 어떤 output/result 를 내야하는지 명시됨 (어떻게 동작해야하는지)- 그렇기 때문에 다양한 구현체가 있음- 실제 개발하는 사람들은 그래픽 카드 제조사임- OpenGL이 이상하게 돌아간다하면 그래픽 제조사의 문제일 가능성이 큼, 드라이버 업데이트 자주해야함 immediate mode (fixed function pipeline)- 예전에 쓰였던 방식- 대부분 기능이 내부에 숨겨져있음, 내부에서 작동확인 어려움- 그대신 사용하기 쉽고 이해하기 쉬움- 그러나 비효율적 - Op..
2021.07.22