无法打开源文件 d3dx9tex.h
刚开始研究beginning directx9
第一个引用d3dx9tex.h的代码就报这个错误。
我已经在项目-》属性-》配置属性-》连接器-》常规-》附加库目录里面添加了“C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include”文件夹。而且我看到这个文件夹下面有“d3dx9tex.h”这个文件。
可是在vs2010“解决方案资源管理器”中的“外部依赖项”就是没有“d3dx9tex.h”。
debug就报错。
网上找了好久也没找到为什么。有哪位清楚的帮帮忙好么?
源码如下
#include <windows.h>#include <d3d9.h>#include <d3dx9tex.h>#include <string>HINSTANCE hInst;HWND wndHandle;bool initWindow(HINSTANCE hInstance);LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);// DirectX functions and global variablesHRESULT lastResult;LPDIRECT3D9 pD3D;LPDIRECT3DDEVICE9 pd3dDevice;IDirect3DSurface9* bkgrd;bool initDirect3D(HWND hwnd);IDirect3DSurface9* getSurfaceFromBitmap(std::string filename);void Render(void);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ if (!initWindow(hInstance)) return false; if (!initDirect3D(wndHandle)) return false; bkgrd = getSurfaceFromBitmap("./background.bmp"); if (bkgrd == NULL) { MessageBox(NULL, "Make sure the file background.bmp is in the current directory", "ERROR", MB_OK); return 0; } // Main message loop: // Enter the message loop MSG msg; ZeroMemory( &msg, sizeof(msg) ); while( msg.message!=WM_QUIT ) { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { // call our render function Render(); } } if( pd3dDevice != NULL) { pd3dDevice->Release(); pd3dDevice = NULL; } if( pD3D != NULL) { pD3D->Release(); pD3D = NULL; } return (int) msg.wParam;}bool initWindow(HINSTANCE hInstance){ WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = 0; wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = "DirectXExample"; wcex.hIconSm = 0; RegisterClassEx(&wcex); wndHandle = CreateWindow("DirectXExample", "DirectXExample", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL); if (!wndHandle) return false; ShowWindow(wndHandle, SW_SHOW); UpdateWindow(wndHandle); return true;}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_DESTROY: PostQuitMessage(0); break; } return DefWindowProc(hWnd, message, wParam, lParam);}bool initDirect3D(HWND hwnd){ if( NULL == ( pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) { lastResult = E_FAIL; return false; } D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.BackBufferCount = 1; d3dpp.BackBufferHeight = 480; d3dpp.BackBufferWidth = 640; d3dpp.hDeviceWindow = hwnd; if( FAILED( pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pd3dDevice ) ) ) { lastResult = E_FAIL; return false; } return true;}IDirect3DSurface9* getSurfaceFromBitmap(std::string filename){ HRESULT hResult; IDirect3DSurface9* surface = NULL; D3DXIMAGE_INFO imageInfo; // Get the width and height info from this bitmap hResult = D3DXGetImageInfoFromFile(filename.c_str(), &imageInfo); if FAILED (hResult) return NULL; hResult = pd3dDevice->CreateOffscreenPlainSurface(imageInfo.Width, imageInfo.Height, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &surface, NULL); if (FAILED(hResult)) return NULL; hResult = D3DXLoadSurfaceFromFile(surface, NULL, NULL, filename.c_str(), NULL, D3DX_DEFAULT, 0, NULL); if (FAILED(hResult)) return NULL; return surface;}void Render(void){ if( NULL == pd3dDevice ) return; // Clear the backbuffer to a blue color pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 ); IDirect3DSurface9* backbuffer; pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO, &backbuffer); HRESULT hResult = pd3dDevice->StretchRect(bkgrd, NULL, backbuffer, NULL, D3DTEXF_NONE); if (hResult != D3D_OK) MessageBox(NULL,"failed", "error", MB_OK); // Present the backbuffer contents to the display pd3dDevice->Present( NULL, NULL, NULL, NULL );}