Public(86)
-
광원
재질의 종류재질이란 메시(혹은 물체)의 표면 상태를 말하는 것으로 빛이 물체의 표면에서 반사되어 변화된 뒤 사람의 눈에 들어오기까지의 과정을 수학적으로 모델링하기 위해서 사용하는 값들이다. 복잡한 수식은 나중으로 미루고 이런 값들이 있다는 것을 알아두자.주변색(ambient) : 광원의 위치와 무관하게 똑같은 양으로 모든 점에서 반사되는 색확산색(diffuse) : 광원에 반사될 때 출력되는 가장 주된 색반사색(specular) : 특정한 방향으로만 반사되는 색, 광원의 위치와 카메라의 위치에 따라서 달라진다.방출색(emissive) : 메시 표면에서 자체적으로 방출되는 색. 단, 이 빛이 다른 메시에 영향을 주지는 못한다. 광원의 종류실제로 빛이 물체 표면에서 반사되어 인간의 눈에 도달하기까지의 과정을..
2022.08.15 -
행렬 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