본문 바로가기

프로그래밍/DirectX5

DirectX - 알파 블랜딩, 알파 테스팅, Z버퍼 알파 블랜딩이랑 버택스(or인덱스)로 만든 하나의 이상의 페이스(플랜등..)에 입힌 텍스쳐에 특정 부분을 투명하게 하기 위한 기능이다. 하지만 알파 블랜딩을 사용할 때 주의점이 존재 하는데, 알파블랜딩을 사용할 때 주는 옵션중에, D3DRS_SRCBLEND, D3DRS_DESTBLEND가 있다. 각각 디폴트 값은, D3DBLEND_ONE, D3DBLEND_ZERO 인데, 사용할 예제에서는 m_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); m_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);​ 처럼 설정해 주었다. (추가적인 각 추가적인 각 열거체에 대한 설명은 DX도움말.. 2010. 6. 29.
DirectX - 행렬(Matrices) Dx에서 3차원의 정점(Vertex)를 화면상의 모니터로 출력해 주기 위해서는 3가지의 행렬 변환이 필요 하다. 1. 월드 행렬 2. 뷰 행렬 3. 투영 행렬 월드 행렬의 경우에는 3D오브젝트의 로컬좌표를 3차원의 필드에 특정 위치에 뿌려 주기 위해서, ( 좀더 간단하게 말하면, 로컬 좌표를 월드 좌표로 변환 하는 작업 ) 뷰 행렬은 카메라를 셋팅한다고 생각하면 되는데, 뷰 행렬을 만들기 위해서는 추가적인 3개의 백터가 필요 하다. 카메라의 위치, 카메라가 바라보는 방향, 카메라의 Up벡터가 필요 하다. 마지막으로 투영 행렬은, 각각의 3D좌표들을 우리의 눈으로 보게 되는 2D로 변경하는 작업을 한다. 이런 작업을 렌더링 파이프라인이라고 하는데, 3D의 좌표를 모니터 화면에 뿌려주기 위한 작업이라고 보면.. 2010. 6. 14.
DirectX-정점(vertex_삼각형 띄우기) 먼저 정점을 띄우기 위해서는 정점을 보관할 정점 버퍼가 필요 합니다. 정점 버퍼에 FVF(사용자 정의 정점 형식)를 사용하여 생성할 수 있습니다. 최초 생성한 정점 버퍼는 쓰레기 값이 들어가 있기 때문에, Lock함수를 사용하여 값을 넣을 수 있는 포인터를 가져 옵니다. 그 후 미리 지정해 놓은 정점 정보를 정점 버퍼에 저장합니다. HRESULT InitVB() { // 삼각형을 렌더링 하기 위해 3개의 정점 선언 CUSTOMVERTEX verticse[] = { { 150.0f,50.0f,0.5f,1.0f, 0xffff0000, }, { 250.0f,250.0f,0.5f,1.0f, 0xff00ff00, }, { 50.0f,250.0f,0.5f,1.0f, 0xff00ffff, }, }; // 점정 버퍼를.. 2010. 5. 19.
DirectX-전체 화면 하는 방법 디바이스를 생성할때 InitD3D함수에서. D3DPRESENT_PARAMETERS d3dpp;// 디바이스 생성을 위한 구조체 ZeroMemory( &d3dpp, sizeof( d3dpp ) );// 반드시 ZeroMemory() 함수로 구조체를 지워야 함 d3dpp.Windowed = TRUE;// 창모드로 생성 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;// 가장 효율 적인 SWAP 효과 d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;// 현재 바탕화면 모드에 맞춰 후면 버퍼를 생성​ 다음과 같은 부분이 있었습니다. 전 그냥 Windowed 라는 부분을 FALSE로 해주면 전체화면이 되겠거니, 하였으나, 그렇지 않더군요. 단순히 전체화면을 하고 .. 2010. 5. 19.
DirectX-디바이스 생성 자 이제 DX를 해봅시다! 일단 닥치고 코드를 칩니다. // DX9를 사용하기 위한 헤더 #include #pragma comment(lib, "dxerr9.lib") #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") #pragma comment(lib, "dxguid.lib") #pragma comment(lib, "winmm.lib") ////////////////////////////////////////////////////////////////////////// // 전역 변수 LPDIRECT3D9g_pD3D = NULL;// D3D 디바이스를 생성할 D3D 객체 변수 LPDIRECT3DDEVICE9g_pd3dDevice = .. 2010. 5. 17.