프로그래밍/DirectX 5

DirectXMath

DirectX11의 Math LibraryDirectX 9, 10의 경우 d3dx 라이브러리를 링크해서 D3DXVECTOR, D3DXMATRIX와 같이D3DX 객체와 유틸 함수를 편리하게 사용할 수 있었다.DirectX11 부터는 DirectXMath(XNAMath) 라이브러리를 사용해서 프로그래밍을 할 수 있다.이를 사용하는 방법은 간단하다. 그냥 DirectXMath.h 헤더를 include 하면 끝이다. XNA Math Library의 특징XNA Math 라이브러리는 Xbox와 Windows에서 사용할 수 있는 특별한 하드웨어 Register를 사용한다.SIMD(Single Instruction Multiple Data)를 활용해서 여러개의 데이터를 하나의 명령어로 처리 할 수 있다.다음과 같이 벡..

시야 변환

시야 변환 View Matrix를 구하는 과정을 알아보자. View Transform(뷰 변환)은 월드를 카메라 좌표계로 만드는 변환이다. World 를 기준으로한 Local Space의 원점과 x, y, z 축을 나타내는 동차 좌표들이 다음과 같이 있다고하자. Qw = (qx,qy,qz,1) Uw = (ux,uy,uz,0) Vw = (vx,vy,vz, 0) Ww = (wx,wy,wz,0) 위의 정보를 근거로 View->World 좌표계 변환 행렬을 만들면 다음과 같다. | ux, uy, uz, 0 | W = | vx, vy, vz, 0 | | wx, wy, wz, 0 | | Qx, Qy, Qz, 1 | 그런데 우리가 원하는것은 World -> View 변환 행렬을 원하므로 이것의 역행렬을 구하면 된다...

1. Direct3D11 초기화

Direct3D 초기화 4X Multi Sampling을 지원하는 응용프로그램의 초기화 과정 예 1. D3D11CreateDevice 함수를 호출해서 Device와 DeviceContext를 생성 2. CheckMultiSamplingLevel을 호출해 지원하는 MSAA(MultiSampling Anti Aliasing)의 품질 수준 지원 정보 획득 3. SwapChain 관계를 정의하는 DXGI_SWAP_CHAIN_DESC 구조체를 채움 4. Device를 생성했던 IDXGIFactory Interface를 Query해서 SwapChain Instance를 생성 5. Back Buffer의 RenderTarget View를 생성 6. Depth,Stencil Buffer 생성 7. Render Targ..

0.DirectX 11 기본 지식

기본 지식 Direct3D의 개요 Direct3D는 응용 프로그램이 3차원 가속 기능을 이용하여 3차원 세계를 렌더링 할수 있게 하는 API 이다. Direct3D는 그래픽 하드웨어를 제어 할 수 있기 때문에, 화면을 깨끗히 지우라는 명령을 하드웨어에게 ID3D11DeviceContect::ClearRenderTargetView 함수를 통해서 전달 할 수 있다. 기존 널리 쓰이는 버전을 DirectX 9을 사용하였는데, 9의 경우 특화 기능을 사용하려면, 현재 하드웨어(그래픽 카드)가 해당 기능을 지원하는지 일일히 체크해야했다면, 11은 그럴 필요가 없다. 그래픽 장치가 DX11을 지원한다고 얘기하려면 DX11 의 모든 기능을 지원해야 한다는 엄격한 조건이 붙기 때문이다. COM Component Obj..

Easy Color Shader

셰이더 프로그래밍 입문 책을 보면서 공부한 내용을 정리하려합니다. 정말 잘 쓰여진 책인것 같습니다. http://www.hanbit.co.kr/store/books/look.php?p_code=B8421024205 Shader의 정의화면에 출력되는 픽셀들의 위치와 색상을 결정하는 함수다.간략한 3D Pipeline정점 데이터 ▼// GPU ▼ Vertex Shader (정점 위치 결정 ▼ Rasterizer (픽셀 위치 결정) ▼ PixcelShader (색상결정) ▼화면 Vertext shader 기본 코드Vertex shader 의 가장 중요한 일은 정점들의 위치를 계산하는 것이다.struct VS_INPUT { float4 mPosition : POSITION; }; struct VS_OUTPUT ..