Hallo, ich bins nach langer Zeit mal wieder^^
Ich beschäftige mich gerade wieder intensiv mit
DirectX und bin gerade dabei grundlegende Kenntnisse im
Bereich DirectX graphics zu erlangen.
Nun habe ich aber einen sehr unschönen Fehler udn hoffe
jemand kann mir da helfen^^
Hier mein momentaner Codeansatz:
Alles anzeigen
Wenn ich das kompiliere bekomme ich keine Fehlermeldung udn auch beim linken gibts keien Probleme.Nur beim testen beschenkt mich Windows mit einer
netten "Das programm hat einen Fehler festgestellt und muss beendet werden"-Fehlermeldung.
Daraufhin hab ich das Programm ma debuggt und folgende Fehlermeldung erhalten->
[Blockierte Grafik: http://skabus.sk.ohost.de/Daten/fehlermeldung.PNG]
Zusammenhängen tut es anscheinend mit dem D3DDevice, welches
nicht ausgewertet werden kann->
[Blockierte Grafik: http://skabus.sk.ohost.de/Daten/fehlermeldung2.PNG]
Weis jemand wo das Problem liegt oder was ich falsch mache?
Wäre toll wenn mir jemand helfen würde^^
Danke im vorraus,
MfG Ska
Ich beschäftige mich gerade wieder intensiv mit
DirectX und bin gerade dabei grundlegende Kenntnisse im
Bereich DirectX graphics zu erlangen.
Nun habe ich aber einen sehr unschönen Fehler udn hoffe
jemand kann mir da helfen^^
Hier mein momentaner Codeansatz:
Quellcode
- #include "Main_Include.h"
- HWND hWnd;
- BYTE *Ptr;
- IDirect3D9 *gD3DObject;
- IDirect3DDevice9 *gD3DDevice;
- IDirect3DVertexBuffer9 *pD3DVB;
- #define WND_X 500
- #define WND_Y 400
- #define WND_WIDTH 320
- #define WND_HIGTH 240
- const char cAppName[] = "DirectX Tutorials";
- const char cClassName[] = "mainwindowclass";
- const DWORD VertexFVF = (D3DFVF_XYZ | D3DFVF_DIFFUSE);
- LRESULT CALLBACK MessageHandler(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
- HWND CreateMainWindow(HINSTANCE hInstance);
- int InitDirect3D();
- typedef struct
- {
- FLOAT x,y,z; //3D-Coordinates
- D3DCOLOR diffuse; //Vertexcolor
- }MyVertex;
- int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
- {
- if((hWnd = CreateMainWindow(hInstance)) == NULL)
- {
- MessageBox(NULL,"Unable to create Main-Window!","Fatal Error",MB_OK | MB_ICONEXCLAMATION);
- return 1;
- }
- if(InitDirect3D() == 0)
- {
- MessageBox(NULL,"Unable to setup DirectX","DirectX Error",MB_OK | MB_ICONERROR);
- return 1;
- }
- if(FAILED( gD3DDevice->CreateVertexBuffer(sizeof(MyVertex) * 4,
- 0 /* Usage */, VertexFVF,D3DPOOL_MANAGED, &pD3DVB,NULL)))
- {
- MessageBox(NULL,"Unable to vcreate VertexBuffer","DirectX Error",MB_OK | MB_ICONERROR);
- return 1;
- }
- MSG msg;
- while(GetMessage(&msg,NULL,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return 0;
- }
- HWND CreateMainWindow(HINSTANCE hInstance)
- {
- WNDCLASSEX wndclex;
- wndclex.hInstance = hInstance;
- wndclex.lpszClassName = cClassName;
- wndclex.lpfnWndProc = MessageHandler;
- wndclex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
- wndclex.cbClsExtra = NULL;
- wndclex.cbWndExtra = NULL;
- wndclex.hCursor = LoadCursor(NULL,IDC_ARROW);
- wndclex.cbSize = sizeof(WNDCLASSEX);
- wndclex.hIcon = LoadIcon(hInstance,IDI_WINLOGO);
- wndclex.hIconSm = LoadIcon(hInstance,IDI_WINLOGO);
- wndclex.style = CS_DBLCLKS | CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
- wndclex.lpszMenuName = NULL;
- RegisterClassEx(&wndclex);
- return CreateWindowEx(NULL,
- cClassName,
- cAppName,
- WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- WND_X,
- WND_Y,
- WND_WIDTH,
- WND_HIGTH,
- NULL,
- NULL,
- hInstance,
- NULL);
- }
- LRESULT CALLBACK MessageHandler(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
- {
- switch(msg)
- {
- case WM_DESTROY:
- PostQuitMessage(0);
- return 0;
- break;
- }
- return (DefWindowProc(hWnd,msg,wParam,lParam));
- }
- int InitDirect3D()
- {
- if(FAILED(gD3DObject = Direct3DCreate9(D3D_SDK_VERSION)))
- {
- //Error occured
- return 0;
- }
- D3DDISPLAYMODE d3ddm;
- d3ddm.Width = 1024;
- d3ddm.Height = 768;
- d3ddm.RefreshRate = 0; //0 = default
- d3ddm.Format = D3DFMT_R5G6B5;
- D3DPRESENT_PARAMETERS d3dpp;
- d3dpp.Windowed = FALSE;
- d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
- d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- d3dpp.BackBufferFormat = d3ddm.Format;
- d3dpp.BackBufferWidth = d3ddm.Width;
- d3dpp.BackBufferHeight = d3ddm.Height;
- return (gD3DObject->CreateDevice(D3DADAPTER_DEFAULT, //Direct3D Adapter
- D3DDEVTYPE_HAL, //Devicetype(Hal)
- hWnd, //Handler to the Window
- D3DCREATE_SOFTWARE_VERTEXPROCESSING, //behaivor flag
- &d3dpp, //D3D Present Paramter
- &gD3DDevice));
- }
Wenn ich das kompiliere bekomme ich keine Fehlermeldung udn auch beim linken gibts keien Probleme.Nur beim testen beschenkt mich Windows mit einer
netten "Das programm hat einen Fehler festgestellt und muss beendet werden"-Fehlermeldung.
Daraufhin hab ich das Programm ma debuggt und folgende Fehlermeldung erhalten->
[Blockierte Grafik: http://skabus.sk.ohost.de/Daten/fehlermeldung.PNG]
Zusammenhängen tut es anscheinend mit dem D3DDevice, welches
nicht ausgewertet werden kann->
[Blockierte Grafik: http://skabus.sk.ohost.de/Daten/fehlermeldung2.PNG]
Weis jemand wo das Problem liegt oder was ich falsch mache?
Wäre toll wenn mir jemand helfen würde^^
Danke im vorraus,
MfG Ska
"A Programmer is just a tool which converts cofein into code!"
(anonymer Verfasser)
[Blockierte Grafik: http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]
(anonymer Verfasser)
[Blockierte Grafik: http://www.beepworld.de/memberdateien/members98/skabus/sigc.jpg]