'Computer Engineering/DirectX'에 해당되는 글 8건
- 2009.08.14
- 2009.04.24
- 2009.04.21
- 2009.03.31
- 2009.03.31
- 2009.03.31
- 2009.03.31
- 2009.03.31
| Direct X에서 가장 기본적이고 중요하며, M/S에서 투자를 가장 많이 하고 있는 부분입니다. 모든 화면 처리는 최종적으로 DirectDraw를 통해 이루어지며, 각종 애니메이션과 배경등에 대한 처리를 위한 기본적인 설정작업은 여기에서 이루어지게 됩니다. 즉, 팔레트라는 요소를 직접 제어하게 해 주는 요소 입니다. 이 처럼 DirectDraw를 어떻게 사용하느냐에 따라, 게임의 속도가 판가름 난다고 해도 과언이 아닌 아주 중요한 부분입니다. DirectDraw를 능숙하게 다루기 위해서는 표면처리에 대한 개념을 확실히 알고 넘어가는 것이 중요합니다. 즉, 전면 표면(Primary Surface), 후면 표면(Back Surface), 그리고 각종 오프스크린(OffScreen)에 대한 처리를 능숙하게 할 수 있다면 게임에서 절반 정도는 처리를 할 수 있는 능력이 생기게 됩니다. 처음에는 H/W의 접근을 기계어(Assembly, C 등)를 이용하여 접근 하였습니다. 하지만 Direct X를 이용하면서 부터는 이들에 대한 접근도 훨씬 쉽게 처리할 수 있게 되었습니다. 다음은 DirectDraw를 사용하기 위한 기본적인 설정 부분을 설명하겠습니다. 나머지 부분은 게임 제작 가이드라는 항목에서 자세히 설명하도록 하겠습니다. | ||||||||||||||
| DirectDraw 초기화 및 종료 | ||||||||||||||
| 1. DirectDraw 객체 생성하기 | ||||||||||||||
DirectDraw를 사용하기 위해서는* lpGUID, LPDIRECTDRAW FAR * lplpDD,IUnknown FAR * pUnkOuter ); | ||||||||||||||
lpGUID : DirectDraw 객체를 생성하기 위한 Display device의 GUID(Global Unique Identifier). | ||||||||||||||
| 다음은 이들의 사용예이다. | ||||||||||||||
| ||||||||||||||
| 2. Process 독점하기 | ||||||||||||||
| 일단 게임을 위해서는 Process를 독점할 필요가 있다. 이는 프로그램이 CPU를 독점하여 수행속도를 빨리하며, 다른 응용 프로그램과의 연계등에 대한 신경을 쓸 필요가 없게 하기 위함이다. CPU를 독점하기 위해서는 아래와 같이 SetCooperativeLevel() 함수를 써야 한다.
HRETULT SetCooperativeLevel (LPDIRECTDRAW lpDD, HWND hWnd,lpDD : 초기화에서 설명한 DirectDraw 객체에 대한 포인터 hWnd : Windows handle. 보통 이 handle은 작업전환(ALT+TAB key)에 관한 message를 보낼 때 사용한다. dwFlags : 매개 변수의 적용 방법은 다음과 같다.
| ||||||||||||||
| ||||||||||||||
| 3. Video Mode 설정 | ||||||||||||||
| DirectDraw는 320 × 320, 320 × 400, 640 × 480 등의 해상도를 지원하며, 색상도 256 color(8 bits) 에서 true color(24 bits)까지 지원이 된다.
HRESULT SetDisplayMode ( LPDIRECTDRAW lpDD, DWORD dwWidth,
| ||||||||||||||
| 4. DirectDraw 종료하기 | ||||||||||||||
| DirectDraw를 초기화한 경우 프로그램을 종료하기 전에 반드시 DirectDraw 객체와 지금까지 생성한 모든 Direct 객체들을 종료해야 한다.
| ||||||||||||||
| 표면(surface) 생성 | ||||||||||||||
| 표면이란 이미지(Image)를 저장하기 위한 메모리의 특정 부분을 말하며, 화면과 바로 연결된 표면(Surface)과 그렇지 않은 표면(Offscreen)으로 나누어 진다. | ||||||||||||||
| 1. 1차 표면 ( 전면, Primary Surface ) | ||||||||||||||
우리가 보는 화면은 보통 1차 표면(전면, Primary Surface)이라 불리는 표면과 동일하다. 즉, 전면에 어떤 값을 대입하면, 이에 대한 내용이 화면에 그대로 반영된다. 따라서 전면의 크기는 화면 해상도와 칼라 수에의해 결정된다. | ||||||||||||||
| 2. 2차 표면 (후면, Back Surface) | ||||||||||||||
후면은 화면과 직접 연결되어 있지 않기 때문에 그리는 내용이 바로 표면에 나타나지는 않는다. 그러나 애니메이션(Animation)과 같은 연속적인 그림을 보여 주려면, 후면에 한 장의 완전한 그림을 그린 후 이를 전면과 서로 바꾸어서 보여주어야 한다. 이 처럼 화면에 바로 나타나지는 않지만, 다음에 보여주어야 할 내용을 저장하는 장소로서 사용이 가능하다. | ||||||||||||||
| 3. 표면 버퍼 ( Offscreen ) | ||||||||||||||
화면에 보이는 표면이 아니라, 그림 이미지(Image)를 저장하는 임시 기억 공간. 저장된 이미지는 전면이나 후면에 복사를 하여 화면에 보여줄 수 있게 된다. | ||||||||||||||
| 4. 표면 만들기 | ||||||||||||||
표면을 만들려면 먼저 DirectDraw를 초기화 해야 한다 그리고 나서 DirectDraw 객체에 대한 표면을 생성한다. 여기서는 DDInit() 라는 함수로 DirectDraw를 초기화 하고 표면을 생성하는 방법을 정리하였다. | ||||||||||||||
| ||||||||||||||
| back
|
| DirectX를 이용한 정 사면체 Sierpinski Gasket (0) | 2009.04.24 |
|---|---|
| X 파일 로드 예제 (0) | 2009.04.21 |
| 핸들에 대한 이해 (0) | 2009.03.31 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
| Direct Draw 초기화 및 종료 (0) | 2009.08.14 |
|---|---|
| X 파일 로드 예제 (0) | 2009.04.21 |
| 핸들에 대한 이해 (0) | 2009.03.31 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
| Direct Draw 초기화 및 종료 (0) | 2009.08.14 |
|---|---|
| DirectX를 이용한 정 사면체 Sierpinski Gasket (0) | 2009.04.24 |
| 핸들에 대한 이해 (0) | 2009.03.31 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
핸들(handle)이란 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32비트의 정수값이다. 도스 프로그래밍에서는 거의 유일하게 파일 핸들만이 사용되었으며 그래서 도스에서 핸들은 곧 파일 핸들을 의미하는 경우가 많았다. 그러나 윈도우즈에서는 여러 가지 종류의 핸들이 사용되고 있다. 만들어진 윈도우에는 윈도우 핸들(hWnd)을 붙여 윈도우를 번호로 관리하며 아직은 잘 모르겠지만 DC에 대해서도 핸들을 사용하고 논리적 펜, 브러시에도 핸들을 붙여 관리한다. 심지어 메모리를 할당할 때도 할당한 메모리의 번지를 취급하기보다는 메모리에 번호를 붙인 메모리 핸들을 사용한다. 왜 이렇게 핸들을 자주 사용하는가 하면 대상끼리의 구분을 위해서는 문자열보다 정수를 사용하는 것이 훨씬 더 속도가 빠르기 때문이다.
윈도우즈에서 핸들을 이렇게 많이 사용하므로 우리는 핸들의 일반적인 특성에 관해서 미리 숙지하는 것이 좋다. 핸들은 일반적으로 다음과 같은 특징이 있다.
① 일단 핸들은 정수값이며 대부분의 경우 32비트값이다. 핸들을 사용하는 목적은 오로지 구분을 위한 것이므로 핸들끼리 중복되지 않아야하며 이런 목적으로는 정수형이 가장 적합하다.
② 핸들은 운영체제가 발급해 주며 사용자는 쓰기만 하면 된다. 예를 들어 윈도우를 만들거나 파일을 열면 운영체제는 만들어진 윈도우나 열려진 파일에 핸들을 붙여준다. 사용자는 이 핸들을 잘 보관해 두었다가 해당 윈도우나 파일을 다시 참조할 때 핸들을 사용하면 된다. 사용자가 직접 핸들을 만들 경우란 없다.
③ 같은 종류의 핸들끼리는 절대로 중복된 값을 가지지 않는다. 만약 이렇게 된다면 핸들은 구분을 위해 사용할 수 없을 것이다. 물론 다른 종류의 핸들끼리는 중복된 값을 가질 수도 있다.
④ 핸들은 정수형이므로 값을 가지겠지만 그 실제값이 무엇인지는 몰라도 상관없다. 핸들은 크고 작음의 성질을 가지는 숫자가 아니라 단순한 표식일 뿐이다. 핸들형 변수를 만들어 핸들을 대입받아 쓰고 난 후에는 버리면 된다.
윈도우즈에서 핸들은 예외없이 접두어 h로 시작되며 핸들값을 저장하기 위해 별도의 데이터형까지 정의해 두고 있다. HWND, HPEN, HBRUSH, HDC 등이 핸들을 담기 위한 데이터형들이며 모두 부호없는 정수형이다.
| DirectX를 이용한 정 사면체 Sierpinski Gasket (0) | 2009.04.24 |
|---|---|
| X 파일 로드 예제 (0) | 2009.04.21 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
| visual studio directX sdk 와 링크 하기 (0) | 2009.03.31 |
3D 2개월차 첫날..
* SIMD(Single Instruction Multiple Data)
: 하나의 연산에서 여러개의 데이타를 처리한다.
* VGA 가속 얻는방법 2가지..
1. T&L Engine (Transform & Lighting)
: 하드웨어 버텍스 프로세싱.. 칩셋이 박혀있다
2. Vertex Shader
: 소프트웨어 버텍스 프로세싱.. GPU 이용
DX90 한글판 도움말을 보면서 함수와 함수의 파라메터 등을 설명을 들었고..
그중에 중요한것만 추려서 정리를 해보면...
함수들 일단 나열함번 해보자..
Direct3DCreate9()
CreateDevice()
Clear()
BeginScene()
EndScene()
Present()
도움말을 봐도 한글이긴한데 알아먹기가 영 까탈스러워서 다시 정리를 해보면..
* Direct3DCreate9()
IDirect3D9 *Direct3DCreate9( UINT SDKVersion ); // D3D 객체생성함수
성공했을 경우IDirect3D9 인터페이스의 포인터를 돌려준다.실패는 NULL 포인터를 돌려준다.
* IDirect3D9::CreateDevice()
HRESULT CreateDevice(
UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS *pPresentationParameters,IDirect3DDevice9** ppReturnedDeviceInterface );- UINT Adapter만들어질 IDirect3DDevice9 객체와 대응될 그래픽카드.모니터가 한대이면 신경쓸필요 없다.- DeviceType - 이용할 장치 타입D3DDEVTYPE_HAL = 하드웨어 가속을 사용.D3DDEVTYPE_REF = 디버깅때 설정하고 사용한다. S/W렌더링 H/W가속을 받지 않는다.- hFocusWindow - 장치가 출력할 윈도우의 핸들- BehaviorFlags여러가지가 있지만.. 일단 중요도가 높은..D3DCREATE_HARDWARE_VERTEXPROCESSING // 정점 쉐이더를 지원할때 하드웨어 가속사용D3DCREATE_SOFTWARE_VERTEXPROCESSING // 정점 쉐이더를 지원할때 소프트웨어적 지원D3DCREATE_MIXED_VERTEXPROCESSING // H/W, S/W 가속을 프로그램중에 전환이 가능- pPresentationParametersD3DPRESENT_PARAMETERS 구조체 주소.- ppReturnedDeviceInterfaceIDirect3DDevice9 의 인터페이스를 갖고있는 포인터가 담겨진다.* IDirect3DDevice9 인터페이스를 만드는데 필요한 구조체..typedef struct _D3DPRESENT_PARAMETERS_
{
UINT BackBufferWidth;
UINT BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
DWORD MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;
HWND hDeviceWindow;
BOOL Windowed;
BOOL EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD Flags;
UINT FullScreen_RefreshRateInHz;
UINT PresentationInterval;
} D3DPRESENT_PARAMETERS;BackBufferWidth/BackBufferHeight - 픽셀 단위의 백 버퍼 너비/높이.
BackBufferFormat - 백 버퍼의 픽셀 포맷. BackBufferFormat에 사용되는 인자는 밑에.
D3DFMT_R8G8B8 - 24 Bit 픽셀 포맷.
D3DFMT_X8R8G8B8 - 32 Bit 픽셀 포맷. 가장 왼쪽의 8비트는 사용되지 않음.
D3DFMT_A8R8G8B8 - 32 Bit 픽셀 포맷. 가장 왼쪽의 8 Bit는 Apha 값.
D3DFMT_A16B16G16R16F - 64 Bit 부동 소수점 픽셀 포맷. (순서가 BGR임인 것을 유의하세요.)
D3DFMT_A32B32G32R32F - 128 Bit 부동 소수점 픽셀 포맷. (순서가 역시 BGR.)
BackBufferCount - 백 버퍼의 갯수. 보통, 1개만 생성하므로 "1"을 넘겨준다.
MutiSampleType - 멀티 샘플링을 사용할 것인지의 여부. (안티 앨리어싱을 할건지..)
MultiSampleQuality - 백버퍼에 멀티 샘플링을 어느정도 가할 것인지..(안티 앨리어싱 퀄리티)
SwapEffect - 플리핑 체인의 버퍼가 교환되는 방법을 지정하는 D3DSWAPEFFECT 열거형 멤버.Blt로 할지 아니면 Flip으로 할지 설정..
보통, 그냥 D3DSWAPEFFECT_DISCARD를 지정해 준다.(백버퍼 내용날리고 다시 새로잡는다)
hDeviceWindow - 서비스와 연결된 윈도우 핸들. 드로잉의 대상이 될 애플리케이션 윈도우를 지정해 줌.
Windowed - 윈도우 모드로 실행할 경우 true, 풀 스크린 모드로 실행할 경우 false로 지정.
EnableAutoDepthStencil - Direct3D가 자동으로 깊이/스텐실 버퍼를 만들고 관리할것인 가의 여부. 보통 true.
AutoDepthStencilFormat - 깊이/스텐실 버퍼의 포맷을 지정한다.
D3DFMT_D32 - 32 Bit 깊이 버퍼를 지정한다.
D3DFMT_D24S8 - 24 Bit 깊이 버퍼를 지정하고 스텐실 버퍼로 8비트를 예약한다.
D3DFMT_D24X8 - 24 Bit 깊이 버퍼를 지정한다.
D3DFMT_D24X4S4 - 24 Bit 깊이 버퍼를 지정하고, 스텐실 버퍼로 4비트를 예약한다.
D3DFMT_D16 - 16 Bit 깊이 버퍼를 지정한다.
Flags - 몇 가지 부가적인 특성들을 추가로 지정해 준다.
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER - 후면 버퍼를 잠글수 있음을 지정한다.
D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL - 다음 후면 버퍼를 시연한 뒤에 깊이/스텐실 버퍼를버리거나 무효화할 것임을 지정한다.
FullScreen_RefreshRateInHz - 재생률을 지정한다. 보통, D3DPRESENT_RATE_DEFAULT.
PresentationInterval - D3DPRESENT 집합의 멤버로, 시연간격을 지정한다.
보통, D3DPRESENT_INTERVAL_IMMEDIATE으로 정해주어 즉시 시연한다.
뭐.. 이렇게 많은데..걍 제로메모리 하고 대충 몇개만 셋팅해주면 된다..
* IDirect3DDevice9::Clear(): 백버퍼 및 Z버퍼,스텐실 버퍼를 클리어한다.HRESULT Clear(
DWORD Count, // 밑에 pRects 가 여러개일때 배열의 수.const D3DRECT *pRects, // 특정영역을 소거하고 싶을때 배열의 시작주소(NULL은 전체)DWORD Flags, // 소거할 표면지정D3DCOLOR Color, // 백버퍼 소거할 표면 색상.float Z, // Z버퍼 깊이의 초기화.. (0.0 ~ 1.0)DWORD Stencil ); // 스텐실 버퍼의 초기화..- FlagsD3DCLEAR_TARGET - 렌더 대상 표면. 보통 백버퍼.
D3DCLEAR_ZBUFFER - 깊이 버퍼.D3DCLEAR_STENCIL - 스텐실 버퍼.
* IDirect3DDevice9::Begin Scene()
: 렌더링 시작.
* IDirect3DDevice9::End Scene()
: 렌더링 종료.
* IDirect3DDevice9::Present()
: 백버퍼를 보이는 화면으로.. 2D에서 Flip 랑 같다.HRESULT Present(
CONST RECT *pSourceRect,CONST RECT *pDestRect,HWND hDestWindowOverride,CONST RGNDATA *pDirtyRegion );
- 걍 대충 NULL,NULL,NULL,NULL 넣으면 된다..
소스..
HRESULT InitD3D( HWND hWnd ) // 초기화 함수
{
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = FALSE;
d3dpp.BackBufferWidth = 1024;
d3dpp.BackBufferHeight = 768;
d3dpp.BackBufferCount = 1;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}
return S_OK;
}
VOID Render() // 렌더 함수
{
if( NULL == g_pd3dDevice )
return;
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// Rendering of scene objects can happen here
// End the scene
g_pd3dDevice->EndScene();
}
// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
이렇게 하면 아무것도 없이 퍼런 화면이 뜬다. 킁..
d3d 관련 헤더파일 인클루드 빼먹지말고..
메뉴에툴에옵션에디렉토리에인클루드랑라이브러리설정하는것도빼먹지말고.. ㅡㅡ;;
<< 파일설명 >>
Tut01_CreateDevice.zip : DX SDK 튜토리얼 소스 (풀모드로 수정한것)
D3D_test1.zip : 튜토리얼 소스 똑같이 다시 작성한것.
| X 파일 로드 예제 (0) | 2009.04.21 |
|---|---|
| 핸들에 대한 이해 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
| visual studio directX sdk 와 링크 하기 (0) | 2009.03.31 |
| 3D 기본 용어와 이론 (0) | 2009.03.31 |
.. DX가 서서히 변하고 있다더니.. October 버젼 쓰는 중인데
summer버젼 쓰는 분들의 이야기로는 해결이 안됐다.
결국 October 버젼 안에 영문문서 안되는 영어로 해메서.. 시간 다 날리고 해결. 쩝..
dinput8.lib d3dxof.lib dxguid.lib d3dx9dt.lib d3d9.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
이것은 이전까지 .net에서 컴파일시 쓰였던 Additional Indepencies.
허나 이것을 쓰면 d3dx9dt.lib파일이 없다고 에러난다.
밑의 글을 보면 알겠지만 d3dx9dt.lib는 debug모드로 컴파일할때 필요한데..
하지만 이것은 이제 사라졌다.
이제부터 이것을 링크해야한다.
dxerr9.lib d3dx9.lib d3d9.lib d3dxof.lib dxguid.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
100% 컴파일된다. .NET 에서
vc 6.0은 9.0c 부턴가 잘 안된다고 하던데..
밑에나와 있는 꽁수에 이걸 잘 덧붙여서 생각해보시길. (vc 6.0에선 안해봄)
단 2005 October버젼.
바뀐게 많아서 이젠 외우기도, 알려고 노력하기도 싫다 ㅡㅡ
| X 파일 로드 예제 (0) | 2009.04.21 |
|---|---|
| 핸들에 대한 이해 (0) | 2009.03.31 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| visual studio directX sdk 와 링크 하기 (0) | 2009.03.31 |
| 3D 기본 용어와 이론 (0) | 2009.03.31 |
흠...
visual studio directX sdk 와 링크 하기
한번 올려보자.
dx를 처음 독학했을때의 어려움은.
돌이켜보면 어캐 시작하는지도 알아내기 힘들었다는 것이었다.
특히나 무슨 버젼마다 vc6.0에선 안되고 닷넷에선 되고..
멀 또 수정했다는 둥. 등록 라이브러리파일이 버젼마다 다르다는둥.
summer버젼부터는 vc6.0에서 안 먹힌다는 둥.
그리고 고민에 고민을 하다가 2005october을 깔고... 2005 december를 깔고...
헌데 미치고 팔짝뛰게 시리 visual studio 2005나 vc 6.0에선 진짜 안 먹히는 것이었다.
5번 인스톨 하면... 가끔 될 때가 있었다.
-_-.. 어쩌라는건지..
삽질을 하다가 알아낸건데..
너무 쉬우면서도 당연하면서도..... 지극히 뻔한 방법이었다.
이거 삽질한 덕분에 visual studio 툴 옵션을 꽤나 많이 알게 됐다. -_-..
삽질도 삽질 나름대로 좋은 점이 있는 듯. 그 당시 1,2주동안 머리털 빠지게 스트레스
받은거 빼면 말이다..
여튼 이제부터 본론이다.
일단 VC 6.0과 링크하는 법 부터 보겠다.
일단 확실치는 안지만 최근 DX버젼을 쓰는 사람이라면 DX Wizard는 포기하는게 낫다.
dx가 2개월 단위로 업데이트 하는건, 급격한 변화를 겪으면 프로그래머가 따라오기 힘들었기에
서서히 2개월 단위로 변화를 주기로 결정한 것이라고 한다.
DX가 원래 com 기반이 약간 있는건 좀 들어본 분이라면 다 아실것이다.
헌데 이것을 버리고 점점 static한 기반으로 간다고 한다.
때문에 dx wizard는 더 이상 과거의 방법으로 간단한 방법으로 만들어 지지 않게 되었다.
언젠가 지금의 변화가 끝나서 어느정도 정착이 되면 다시 wizard가 나올지도 모르는 일이지만
일단 당분간은 포기하는 것이 낫다.
간단한 dx를 구동시키는 framework정도는 자신만의 것을 만들어서 가지고 있는 것이 낫다.
초보자라면.. 그나마 호출시키는 함수도 많은데.. 자신만의 프레임웍 만들기가 힘들고
참고할 서적도 드물겠지만..
그나마 보기 쉬운것이라면 김용준 씨의 3D 게임 프로그래밍을 추천한다.
각 장 앞에 함수 상관도가 있어서 머리속에 넣기 좋다.
글고 어짜피 wizard가 만들어지는 코드는 최적화 시키기도 어려우니 애당초
자신만의 프레임웍을 노리자.
....
;; 링크시키는 글 쓴다 하고 삼천포로 빠졌군 ㅡㅡ..
일단 2005 December버젼까지 전부 다 VC 6.0에서 된다. 아주 세세한 사항이나 고급사항
까지는 잘 모르겠지만 본인이 일반적인 게임을 만들때 까진 아무 이상이 없었다.
도움말도 VC 6.0이 2005년 msdn을 참조하게 하는 방법도 나와있지 않은가.
일단 3개의 경로명을 적어준다.
VC 6.0 에서 Tool -> Option -> Directories 탭으로 간다.
library
C:\Program Files\Microsoft DirectX SDK (December 2005)\Lib\x86
추가해 주면 된다.
그리고 *.lib의 파일 추가는
| X 파일 로드 예제 (0) | 2009.04.21 |
|---|---|
| 핸들에 대한 이해 (0) | 2009.03.31 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
| 3D 기본 용어와 이론 (0) | 2009.03.31 |
| X 파일 로드 예제 (0) | 2009.04.21 |
|---|---|
| 핸들에 대한 이해 (0) | 2009.03.31 |
| D3D 디바이스 생성 및 초기화 (0) | 2009.03.31 |
| directX에서 d3dx9dt.lib 파일 관련 에러 (0) | 2009.03.31 |
| visual studio directX sdk 와 링크 하기 (0) | 2009.03.31 |