|
|
就这个D3D9的初始化程序,我自己模仿WINDOWS游戏编程大师技巧里的DDRAW的初始化写的,但为什么编译的时候总是提示
E:\work space\d3din\fasdf.cpp(49) : error C2440: 'initializing' : cannot convert from 'const int' to 'struct _D3DCAPS9'
No constructor could take the source type, or constructor overload resolution was ambiguous
E:\work space\d3din\fasdf.cpp(50) : error C2440: 'initializing' : cannot convert from 'const int' to 'struct _D3DPRESENT_PARAMETERS_'
No constructor could take the source type, or constructor overload resolution was ambiguous
我也添加了d3d9x.lib这个库文件啊,另外我还把dxd9这个文件也包含进去了,应该不是却文件吧,各位帮帮我,真的莫法了,谢谢!!!
- #define WIN32_LEAN_AND_MEAN // just say no to MFC
- #define STRICT
- #define INITGUID // make sure directX guids are included
- #include <windows.h> // include important windows stuff
- #include <windowsx.h>
- #include <mmsystem.h>
- #include <iostream.h> // include important C/C++ stuff
- #include <conio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <memory.h>
- #include <string.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <math.h>
- #include <io.h>
- #include <fcntl.h>
- #include <d3dx9.h> // include directdraw
- #include <d3d9.h>
- // DEFINES ////////////////////////////////////////////////
- // defines for windows
- #define WINDOW_CLASS_NAME "WINCLASS1"
- // default screen size
- #define SCREEN_WIDTH 640 // size of screen
- #define SCREEN_HEIGHT 480
- #define SCREEN_BPP 16 // bits per pixel
- #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
- #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
- // GLOBALS ////////////////////////////////////////////////
- HWND hwnd_app = NULL;
- HINSTANCE hinstance_app = NULL;
- HRESULT hr = 0;
- // direct3d stuff
- IDirect3DDevice9* Device = 0;
- D3DCAPS9 caps = NULL;
- D3DPRESENT_PARAMETERS d3dpp = NULL;
- IDirect3D9* d3d9 = NULL;
- int vp;
- // FUNCTIONS //////////////////////////////////////////////
- LRESULT CALLBACK WindowProc(HWND hwnd,
- UINT msg,
- WPARAM wparam,
- LPARAM lparam)
- {
- // this is the main message handler of the system
- PAINTSTRUCT ps; // used in WM_PAINT
- HDC hdc; // handle to a device context
- // what is the message
- switch(msg)
- {
- case WM_CREATE:
- {
- // do initialization stuff here
- // return success
- return(0);
- } break;
-
- case WM_PAINT:
- {
- // simply validate the window
- hdc = BeginPaint(hwnd,&ps);
-
- // end painting
- EndPaint(hwnd,&ps);
- // return success
- return(0);
- } break;
- case WM_DESTROY:
- {
- // kill the application, this sends a WM_QUIT message
- PostQuitMessage(0);
- // return success
- return(0);
- } break;
- default:break;
- } // end switch
- // process any messages that we didn't take care of
- return (DefWindowProc(hwnd, msg, wparam, lparam));
- } // end WinProc
- ///////////////////////////////////////////////////////////
- int Game_Main(void *parms = NULL, int num_parms = 0)
- {
- if (KEYDOWN(VK_ESCAPE))
- SendMessage(hwnd_app,WM_CLOSE,0,0);
- return(1);
- } // end Game_Main
- ////////////////////////////////////////////////////////////
- int Game_Init(void *parms = NULL, int num_parms = 0)
- {
- d3d9=Direct3DCreate9(D3D_SDK_VERSION);
- d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&caps);
- if(caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
- vp=D3DCREATE_HARDWARE_VERTEXPROCESSING;
- else
- vp=D3DCREATE_SOFTWARE_VERTEXPROCESSING;
- d3dpp.BackBufferWidth=SCREEN_WIDTH;
- d3dpp.BackBufferHeight=SCREEN_HEIGHT;
- d3dpp.BackBufferFormat=D3DFMT_R5G6B5;
- d3dpp.BackBufferCount=1;
- d3dpp.MultiSampleType=D3DMULTISAMPLE_NONE;
- d3dpp.MultiSampleQuality=0;
- d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
- d3dpp.hDeviceWindow=hwnd_app;
- d3dpp.Windowed=true;
- d3dpp.EnableAutoDepthStencil=true;
- d3dpp.AutoDepthStencilFormat=D3DFMT_D24S8;
- d3dpp.Flags=0;
- d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT;
- d3dpp.PresentationInterval=D3DPRESENT_INTERVAL_IMMEDIATE;
- hr=d3d9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd_app,vp,&d3dpp,&Device);
- if(FAILED(hr))
- {
- d3dpp.AutoDepthStencilFormat=D3DFMT_D16;
- hr=d3d9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd_app,vp,&d3dpp,&Device);
- }
- return(1);
- } // end Game_Init
- /////////////////////////////////////////////////////////////
- int Game_Shutdown(void *parms = NULL, int num_parms = 0)
- {
- if (d3d9)
- {
- d3d9->Release();
- d3d9 = NULL;
- }
- return(1);
- } // end Game_Shutdown
- // WINMAIN ////////////////////////////////////////////////
- int WINAPI WinMain( HINSTANCE hinstance,
- HINSTANCE hprevinstance,
- LPSTR lpcmdline,
- int ncmdshow)
- {
- WNDCLASSEX winclass; // this will hold the class we create
- HWND hwnd; // generic window handle
- MSG msg; // generic message
- HDC hdc; // graphics device context
- // first fill in the window class stucture
- winclass.cbSize = sizeof(WNDCLASSEX);
- winclass.style = CS_DBLCLKS | CS_OWNDC |
- CS_HREDRAW | CS_VREDRAW;
- winclass.lpfnWndProc = WindowProc;
- winclass.cbClsExtra = 0;
- winclass.cbWndExtra = 0;
- winclass.hInstance = hinstance;
- winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
- winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
- winclass.lpszMenuName = NULL;
- winclass.lpszClassName = WINDOW_CLASS_NAME;
- winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
- // save hinstance in global
- hinstance_app = hinstance;
- // register the window class
- if (!RegisterClassEx(&winclass))
- return(0);
- // create the window
- if (!(hwnd = CreateWindowEx(NULL, // extended style
- WINDOW_CLASS_NAME, // class
- "DirectDraw Initialization Demo", // title
- WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- 0,0, // initial x,y
- 400,300, // initial width, height
- NULL, // handle to parent
- NULL, // handle to menu
- hinstance,// instance of this application
- NULL))) // extra creation parms
- return(0);
- // save main window handle
- hwnd_app = hwnd;
- // initialize game here
- Game_Init();
- // enter main event loop
- while(TRUE)
- {
- // test if there is a message in queue, if so get it
- if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
- {
- // test if this is a quit
- if (msg.message == WM_QUIT)
- break;
-
- // translate any accelerator keys
- TranslateMessage(&msg);
- // send the message to the window proc
- DispatchMessage(&msg);
- } // end if
-
- // main game processing goes here
- Game_Main();
-
- } // end while
- // closedown game here
- Game_Shutdown();
- // return to Windows like this
- return(msg.wParam);
- } // end WinMain
复制代码 |
|