|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
学一本书《Direct3D中的2D编程》,书中只写理论,没有实验操作步骤。
第一章第一节的源码,就没有通过。
实验配置:
Windows7、DX8_SDK
Cfree5.0,设置了Include和Library目录。源码未通过。
VC++6.0,设置了Include和Library目录。源码未通过。
网上看到DX9相关参考:
“第二步:添加链接所需的库文件,如dxguid.lib、d3d9.lib、d3dx9.lib等,……”
不知是否因为缺少这一步骤?针对DX8和本源码,该如何设置?
- //Example1_1
- //main.cpp
- //Ernest Pazera
- //04OCT2001
- //TGO-01-C
- //Libs: d3d8.lib
-
- #include <windows.h> //include windows stuff
- #include <stdio.h> //standard input/output
- #include "D3D8.h" //include direct3d8 stuff
-
- //constants
- //window class name
- const char* WINDOWCLASS = "3D42DGP" ;
- //window title
- const char* WINDOWTITLE = "Example 1.1 (TGO-01-C): Creating and Destroying an IDirect3D8 object" ;
-
- //globals
- //instance handle
- HINSTANCE g_hInstance = NULL ;
- //window handle
- HWND g_hWnd = NULL ;
- //IDirect3D8 pointer
- IDirect3D8* g_pd3d = NULL ;
-
- //function prototypes
- //winmain
- int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nShowCmd ) ;
- //window procedure
- LRESULT CALLBACK TheWindowProc ( HWND hWnd , UINT uMsg , WPARAM wParam , LPARAM lParam ) ;
- //initialization
- void Prog_Init ( ) ;
- //clean up
- void Prog_Done ( ) ;
-
-
- //window procedure
- LRESULT CALLBACK TheWindowProc ( HWND hWnd , UINT uMsg , WPARAM wParam , LPARAM lParam )
- {
- //which message did we get?
- switch ( uMsg )
- {
- case WM_DESTROY : //window being destroyed
- {
- //quit
-
- PostQuitMessage ( 0 ) ;
-
- //message handled, return 0
-
- return ( 0 ) ;
-
- } break ;
- default: //all other messages, send to default handler
- return ( DefWindowProc ( hWnd , uMsg , wParam , lParam ) ) ;
- }
- }
-
- //winmain
- int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nShowCmd )
- {
- //grab instance handle
- g_hInstance = hInstance ;
-
- //redirect stderr and stdout output
- freopen ( "stderr.txt" , "w" , stderr ) ;
- freopen ( "stdout.txt" , "w" , stdout ) ;
-
- //fill in window class
- WNDCLASSEX wc ;
- wc.cbClsExtra = 0 ; //no extra class information
- wc.cbSize = sizeof ( WNDCLASSEX ) ; //size of structure
- wc.cbWndExtra = 0 ; //no extra window information
- wc.hbrBackground = ( HBRUSH ) GetStockObject ( BLACK_BRUSH ) ; //black brush
- wc.hCursor = NULL ; //no cursor
- wc.hIcon = NULL ; //no icon
- wc.hIconSm = NULL ; //no small icon
- wc.hInstance = g_hInstance ; //instance handle
- wc.lpfnWndProc = TheWindowProc ; //window procedure
- wc.lpszClassName = WINDOWCLASS ; //name of class
- wc.lpszMenuName = NULL ; //no menu
- wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | CS_OWNDC ; //class styles
-
- //register window class
- RegisterClassEx ( &wc ) ;
-
- //create window
- g_hWnd = CreateWindowEx ( 0 , WINDOWCLASS , WINDOWTITLE , WS_OVERLAPPEDWINDOW , 0 , 0 , 320 , 240 , NULL , NULL , g_hInstance , NULL ) ;
-
- //show the window
- ShowWindow ( g_hWnd , nShowCmd ) ;
-
- //initialization
- Prog_Init ( ) ;
-
- MSG msg ;
- //message pump
- for ( ; ; )
- {
- //check for a message
- if ( PeekMessage( &msg , NULL , 0 , 0 , PM_REMOVE ) )
- {
- //message exists
-
- //check for quit message
- if ( msg.message == WM_QUIT ) break ;
-
- //translate the message
- TranslateMessage ( &msg ) ;
-
- //dispatch the message
- DispatchMessage ( &msg ) ;
- }
- }
-
- //clean up
- Prog_Done ( ) ;
-
- //exit
- return ( msg.wParam ) ;
- }
-
- //initialization
- void Prog_Init ( )
- {
- //create the IDirect3D8 object
- g_pd3d = Direct3DCreate8 ( D3D_SDK_VERSION ) ;
-
- //error check
- if ( g_pd3d )
- {
- //success
- fprintf ( stdout , "IDirect3D8 object created successfully.\n" ) ;
- }
- else
- {
- //failure
- fprintf ( stderr , "IDirect3D8 object creation failed.\n" ) ;
- }
- }
-
- //clean up
- void Prog_Done ( )
- {
- //safe release of IDirect3D8 object
- if ( g_pd3d )
- {
- //release
- g_pd3d->Release ( ) ;
-
- //set to null
- g_pd3d = NULL ;
-
- //report action
- fprintf ( stdout , "IDirect3D8 object released.\n" ) ;
- }
- }
复制代码
|
|