Public/GraphicsAPI(14)
-
행렬 01
뷰 좌표계나 뷰 행렬은 카메라 좌표계 , 카메라 행렬이라고도 하며, 투영 행렬은 프로젝션 행렬이라고도 한다. TM(Transform Matrix) 로컬 좌표계를 월드 좌표계로 변환하는 행렬을 간단하게 변환 행렬 (Transform Matrix)이라 하고 줄여서 TM이라고 부른다. TM은 모든 물체마다 고유하게 하나씩 존재한다. 예를들면 3차원 공간에 100개의 물체를 그리려면 100개의 TM이 필요하다는 얘기다. TM은 반드시 SetTransform(D3DTS_WORLD,&matWorld)처럼 해주어야 하드웨어 가속을 받을 수 있다. 카메라 변환(Camera transform) 3차원 공간상의 물체를 배치했으면 이들을 보기 위한 카메라를 설치해야 한다. 카메라 변환이란 3차원 월드 좌표계를 카메라를 기준..
2022.08.15 -
그리기 (Render)
VOID Render() { /// 후면버퍼를 파란색(0,0,255)으로 지운다. g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 ); /// 렌더링 시작 if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { /// 정점버퍼의 삼각형을 그린다. /// 1. 정점정보가 담겨있는 정점버퍼를 출력 스트림으로 할당한다. g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) ); /// 2. D3D에게 정점쉐이더 정보를 지정한다. 대부분의 경우에는 FVF만 지정한다. g_pd3dDevice->SetFVF( D3DFVF_CUSTO..
2022.08.14 -
정점 버퍼
/// 삼각형을 렌더링하기위해 세개의 정점을 선언 CUSTOMVERTEX vertices[] = { { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, }, { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, }; 3차원 공간의 x,y,z 값과 rhw 값, 그리고 각 정점마다 다른 색을 할당하고 있다. 색의 경우 0xAARRGGBB의 순서로 값을 주게 되는데, 다음과 같다. A : Alpha 값으로 0x00 ~ 0xff 값을 갖는다. R,G,B : Red,Green,Blue의 값으로 0x00 ~ 0xff 값을 가질 수 있다. 이제부터 설..
2022.08.14 -
FVF
Flexible Vertex Format(FVF) D3D 8.0 이후부터는 FVF를 사용해야 정점 셰이더를 사용할 수 있다. FVF는 D3D에서 정해져 있는 정점 포맷 중에서 자신이 제작하는 프로그램에 알맞은 것들을 모아서 새로운 정점 포맷을 정하는 방법이다. D3D 9.0에서 정해져 있는 포맷은 다음과 같다. 정점의 좌표 x,y,z좌표 (float) RHW RHW(float) 결합 가중치 1~4결합 가중치(float) 정점의 법선벡터 x,y,z좌표(float) 정점의 점 크기 점 크기(float) 확산광 색 확산광 RGBA(DWORD) 반사광 색 반사광 RGBA(DWORD) 텍스처 좌표 1 1~4차원 좌표계(float 1~4) . . . 텍스처 좌표 8 1~4차원 좌표계(float 1~4) 위의 포맷을..
2022.08.14 -
일반적인 WIN32 구조와 D3D 비교
WIN32 RegisterClassEX()로 생성하고자 하는 윈도우의 클래스를 등록한다. CreateWindow()로 윈도우를 생성한다. ShowWindow(),UpdateWindow()로 윈도우를 화면에 표시한다. GetMessage(),TranslateMessage(),DispatchMessage()로 이루어진 메시지 루프를 수행한다. 메시지 루프를 빠져나올 경우 프로그램을 종료한다. D3D RegisterClassEX()로 생성하고자 하는 윈도우의 클래스를 등록한다. CreateWindow()로 윈도우를 생성한다. InitD3D()함수에서 다이렉트3D를 Init한다. ShowWindow(),UpdateWindow()로 윈도우를 화면에 표시한다. GetMessage(),TranslateMessage(..
2022.08.10 -
삼각형
삼각형은 3D 물체의 기본 구성 요소이다. 물체를 구성하기 위해서는 물체의 모양과 외형을 묘사하는 삼각형 리스트를 만들어야 한다. 예를 들어 사각형을 만들기 위해서는 다음 그림에 보이는 것처럼 두 개의 삼각형으로 나누고 각각의 삼각형을 구성하는 버텍스를 지정해야 한다. Vertex rect[6] = {v0,v1,v2 // triangle0 v0,v2,v3}; // triangle1 주의할점은 삼각형의 버텍스를 지정하는 순서는 매우 중요하다. 이를 두르기 순서(winding order)라고 부른다.
2022.08.06