본문 바로가기

전체 글339

220113_D2D 장치 초기화 ComPtr란? : C++/WinRT에서 사용하는 스마트 포인터 D3D11 프로그래밍에서는 Direct3D 11 API를 사용하기 때문에 ComPtr을 사용하면 안전하고 편리하게 COM객체를 관리할 수 있다. DXGI(DirectX Graphic Infrastructure)란? : Direct3D 10 이상 버전을 사용하는 애플리케이션에서 GPU를 관리하는데 필요한 기능을 제공하는 라이브러리 FAILED 매크로란? D3D11의 장치를 생성하고 난 후에는 FAILED 매크로를 통해 제대로 만들어졌는지 확인하는 것이 좋다. FAILED 매크로는 성공하면 0을 반환하고 실패하면 0 이외의 수를 반환한다. 관례상 성공하면 S_OK(0x00000000), 실패하면 E_FAIL(0x80004005)를 반환한다. 1.. 2023. 1. 13.
230112_D2D 렌더링 파이프라인 개요_2 월드 변환의 순서 : 크기 -> 회전 -> 위치 (크자위) * 행렬은 곱셈의 순서가 바뀌면 결과가 달라진다 (교환법칙이 성립하지 않기 때문) 원근감 = 투영 변환 크기변환이 이뤄지지 않는 경우 직교투영을 쓰기도 함 투영 변환이 끝나면 파란색 네모 안에 모든 물체가 들어감 * NDC 좌표계란? x, y는 -1~1 범위, z는 0~1 범위로 이루어진 좌표계를 의미함 * NDC 좌표계를 쓰는 이유? 여러 해상도에 대응하기 위해서임 이렇게 비율 좌표로 바뀌어 있는 상태를 클립공간이라고도 한다. 정점처리단계를 지난 정점은 레스터라이저단계로 넘어간다 레스터라이저단계에서는 화면상에 나와야 하는 픽셀들을 계산해서 만들어줌 레스터라이저를 거치면서 각각 픽셀 위치에 맞는 정점을 넣어준다. *UV좌표란? 정점에서 어디서 픽.. 2023. 1. 12.
1. 행렬 1. 행렬의 전치연산 위 행렬에서 a와 f를 중심축으로 뒤집는 연산을 전치연산이라고 한다. * 정방행렬이란? 전치행렬로 뒤집어도 모습이 같은(성분은 달라지지만 모양은 같음) 행렬 2. 행렬의 곱연산 행과 열을 대응시켜 곱하고 그 결과를 더한다 * 행렬은 교환법칙을 만족하지 않고 결합법칙을 만족한다 - A * B != B * A - A * (B * C) = (A * B) * C 3. 행렬곱의 전치연산 (A * B)^T = B^T * A^T 열 기반 행렬과 행 기반 행렬 벡터를 열로 사용하는지 행으로 사용하는지에 따라 열 기반, 행 기반으로 나뉨 또한 열 기반, 행 기반을 어떤 벡터와 2X2 행렬의 곱을 나타낼 때 벡터를 어느 한 상태에서 다른 상태로 변경했을 경우 (EX 열기반 -> 행기반) 2X2행렬은 .. 2023. 1. 12.
230111_D2D 렌더링 파이프라인 개요 이전까지 화면에 있는 픽셀 데이터만으로 화면에 그려주었음 그러나 이제부터 앞으로 다룰 데이터는 3차원 데이터임. 모니터는 x, y좌표 즉 2차원인데 데이터는 3차원이면 출력은 어떻게? 3d 데이터가 2d 데이터로 바뀌어서 출력되는 과정을 렌더링 파이프라인이라고 한다. 정점 데이터 : 점 하나 하나를 의미함 레스터라이저 : 정점데이터를 GPU가 받았으면 화면에 보이는 픽셀들을 계산해서 넘겨주는 과정 픽셀 데이터 : 무슨 색깔로 할래? 색깔을 정하는 부분 1. Input Assembler 단계 - 입력 데이터를 읽어오는 단계 - 정점 데이터와 인덱스 데이터를 읽어들여 그리는 순서 결정 - 그래픽 카드가 정점 데이터를 읽을 수 있도록 정렬 - 인덱스 데이터로 그리는 순서 결정 2. Vertex Shader 단.. 2023. 1. 11.