Programing/DirectX
-
C# 으로 DirectXPrograming/DirectX 2008. 7. 22. 16:55
C#이라는 .NET기반의 언어로 DirectX를 이용하여 그래픽 기반의 프로그램 및 게임을 만들어 보고자 한다. .NET 프레임워크를 바탕으로 작성된 코드를 managed코드라고 부르듯 managed DirectX 라 부른다. c++을 사용할 때를 비교해 보면 많은 부분에서 엄청나게 간단해졌다. 우선...실습을 해보자 아래 링크를 따라가보면 managed DirectX 의 기본 예제(디바이스 생성)을 볼 수 있다. http://msdn.microsoft.com/en-us/library/ms920749.aspx 1. VS2008 실행 ->새로 만들기 -> 프로젝트 -> C# -> 윈도우 폼 응용 프로그램을 선택하고 적당한 프로젝트 명을 적은 후 확인 버튼을 눌러 실행 시켜준다. 바로 F5을 눌러 실행시켜 ..
-
Mesh에 관한 기초 내용 정리Programing/DirectX 2008. 5. 23. 15:06
메쉬에 대한 내용에 앞서..우선 ID3DXBaseMesh에 대해서 알아보자.(정보문화사의 용책을 보고 정리해본다.) 1. ID3DXBaseMesh ID3DXBaseMesh은 ID3DXMesh, ID3DXPMeshe등을 상속한다. ID3DXBaseMesh 인터페이스는 메쉬의 버텍스를 보관하는 버텍스 버퍼와 구성을 정의하는 인덱스 버퍼 모두를 포함한다. GetVertexBuffer 와 GetIndexBuffer 를 사용하면 각각의 포인터를 얻을수 있다. 만약 버퍼의 쓰기나 읽기를 원한다면 버텍스와 마찬가지로 LOCK()함수를 사용해야 한다. LockVertexBuffer() 와 LockIndexBuffer()를 사용하는 것이다. 각각 두가지의 인자를 가지는데 첫번째는 잠금 플래그 형식지정이고, 2번째는 잠근..
-
X 파일 읽고 렌더링하기Programing/DirectX 2008. 5. 23. 12:53
D3DXLoadMeshFromX 함수를 사용하여 x파일에 보관된 메쉬 데이터를 읽어들일 수 있다. 이 메서드는 ID3DXMesh 객체를 만들고 여기에 X파일의 기하정보 데이터를 읽어들인다. HRESULT D3DXLoadMeshFromX( LPCTSTR pFilename, DWORD Options, LPDIRECT3DDEVICE9 pDevice, LPD3DXBUFFER* ppAdjacency, LPD3DXBUFFER* ppMaterials, LPD3DXBUFFER* ppEffectInstances, DWORD* pNumMaterials, LPD3DXMESH* ppMesh ); 첫번째 인자는 읽어 들이고자 하는 X파일의 파일명이다. 두번째 인자는 메쉬의 생성 옵션과 관계되는 D3DXMESH 열거형의 플래그이..
-
메쉬 관련 ID3DXBufferPrograming/DirectX 2008. 5. 23. 12:24
COM객체인 ID3DXBuffer 인터페이스는 D3DX가 연속적인 메모리 블록에 데이터를 저장하기 위해 이용하는 범용 데이터 구조체로, 다음과 같은 두개의 메서드를 가진다. GetBufferPointer 버퍼내의 데이터에 대한 포인터를 얻어온다. GetBufferSize 버퍼내의 데이터의 합계 바이트수 사이즈를 얻어온다. 이 ID3DXBuffer에는 정점, 인접성, 메트리얼에 관한 정보를 저장한다. ID3DXBuffer 인터페이스를 얻어오려면,D3DXCreateBuffer 함수를 호출한다. 또한 메모리 누출을 막기 위해 반드시 이용이 끝난 뒤에는 객체를 풀어주어야 한다.(Release) D3DXCreateBuffer HRESULT D3DXCreateBuffer( DWORD NumBytes, LPD3DXB..
-
ID3DXFont 사용하여 문자 출력하기Programing/DirectX 2008. 5. 19. 16:20
다이렉트 디바이스에 문자 출력시키는 순서를 알아보자. 1. 먼저 텍스트를 그리는데 사용할수 있는 인터페이스를 만들어 보자. ID3DXFont* myfont1 = NULL; ID3DXFont는 CDI를 이용하여 약간의 성능저하는 있지만 복잡한 글꼴이나 포맷팅이 가능하다. 2. 인터페이스를 사용하여 폰트를 만들어야 한다. D3DXCreateFont() 함수는 장치와 폰트용의 폰트 개체를 만들어준다. HRESULT D3DXCreateFont( LPDIRECT3DDEVICE9 pDevice, INT Height, UINT Width, UINT Weight, UINT MipLevels, BOOL Italic, DWORD CharSet, DWORD OutputPrecision, DWORD Quality, DWORD..
-
pitch, yaw, roll 에 관해서Programing/DirectX 2008. 5. 17. 18:34
////////////////////////////////////////////////////////////////////////// // 우향 벡터기준으로 회전(피치) ////////////////////////////////////////////////////////////////////////// pitch(float angle) { D3DMATRIX T; D3DXMatrixRotationAxis(&T, &_right, angle); // _right를 기준으로 _up과 _look을 회전한다. D3DXVec3TransformCoord(&_up, &_up, &T); D3DXVec3TransformCoord(&_look, &_look, &T); } //////////////////////////////..
-
다이렉트3D 카메라에 응용되는 벡터 함수Programing/DirectX 2008. 5. 17. 16:36
1. D3DXVec3Normalize 함수 D3DXVECTOR3 *WINAPI D3DXVec3Normalize( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV ); 첫번째 인자는 결과값, 두번째 인자는 정규화하려는 벡터이다. 벡터의 정규화는 벡터의 크기를 1로 만들어 단위 벡터가 되도록 하는 것이다. 벡터의 각 성분을 벡터의 크기로 나누면 정규화가 된다. 이 D3DXVec3Normalize 를 통해 벡터를 정규화할 수 있다. 2. D3DXVec3Cross 함수 D3DXVECTOR3 *D3DXVec3Cross( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );첫번째 인자는 결과값, 두번째 인자는 왼쪽 피연산..
-
용책 다이렉트 초기화 정리Programing/DirectX 2008. 5. 9. 11:51
1. Direct3D 개요 - 3D세계를 표현 할 수 있도록 해주는 저수준 그래픽 API이다. - 애플리케이션과 그래픽 장치를 연결하는 중개자 - Direct3D가 공개하고 있는 기능이라고 해도 하드웨어에서 반드시 지원하리라는 보장은 없다. - 장치에서 지원하지 않을 경우 REF 장치를 사용한다. - D3DDEVTYPE_HAL, D3DDEVTYPE_REF 2. COM - 컴포넌트 객체 모델(COM) - 인터페이스 - 다이렉트 언어를 독립적으로 만들어주고 하위 호환성을 갖출 수 있게 하는 기술 - 다른 COM 인터페이스의 메서드나 특수한 함수를 통해 COM인터페이스의 포인터를 얻는다. - 작업이 모두 끝나면 인터페이스의 Release 메서드를 호출해야 한다. - COM 인터페이스는 접두어로 대문자 I를 가..