DIE KACKE LÄUFT NICH(noob in dx9)



  • 😕
    das geht nich
    hoffentlich kann mir irgendwer helfen
    es kommt keine fehlermeldung nur der blaue bildschirm

    #include <windows.h>
    #include <d3d9.h>
    
    #include <dxerr9.h>
    #define DEGTORAD 0,017453292519943295769236907684886
    D3DMATRIX m1;
    bool quitten;
    
    PDIRECT3D9 g_pD3D = NULL;
    IDirect3DDevice9* g_p3ddevice;
    HWND g_hwindow;
    
    /*class matrix
    {
    public:
    	D3DMATRIX matrix;
    }
    */
    
    	float y;
    class vector3
    {
    public:
    	float x;
    	float z;
    
    	inline vector3(){x=y=z=0;};
    	inline vector3(float a)
    	{x=y=z=a;};
    	inline vector3(float a,float b, float c)
    	{
    		x=a;
    		y=b;
    		z=c;
    	};
    
    };
    
    class color
    {
    public:
    	float r;
    	float g;
    	float b;
    	float a;
    
    	inline color(){r=b=g=a=0;};
    	inline color(float c){r=g=b=c;a=0;};
    	inline color(float cr,float cg,float cb,float ca){r=cr;g=cg;b=cb;a=ca;};
    };
    
      struct vertex
      {
    	  vector3 v;
    	  color c;
      };
    HRESULT res;
    vertex vtx[3];		
    
    void move()
    {};
    void render()
    {
    	//MessageBox(g_hwindow,"halo","fensterung",MB_OK);
    	D3DMATRIX mworld;
    	mworld._11=1;
    	mworld._12=0;
    	mworld._13=0;
    	mworld._14=0;
    	mworld._21=0;
    	mworld._22=1;
    	mworld._23=0;
    	mworld._24=0;
    	mworld._31=0;
    	mworld._32=0;
    	mworld._33=1;
    	mworld._34=0;
    	mworld._41=0;
    	mworld._42=0;
    	mworld._43=10;
    	mworld._44=1;
    
    	res = g_p3ddevice->SetTransform(D3DTS_WORLD,(D3DMATRIX*)&mworld);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX10", MB_OK);
    
    	vtx[1].v=vector3(1,-1,0);
    	vtx[2].v=vector3(0,1,0);
    	vtx[3].v=vector3(-1,-1,0);
    	vtx[1].c=color(1,0,0,0);
    	vtx[2].c=color(0,1,0,0);
    	vtx[3].c=color(0,0,1,0);
    	res = g_p3ddevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,63),1.0,0);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XX1", MB_OK);
    	res=g_p3ddevice->BeginScene();
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XX2", MB_OK);
    	res =g_p3ddevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST,1,vtx,sizeof(vertex));
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XX3", MB_OK);
    	//if (!res) MessageBox(g_hwindow, "bla" ,"XX3", MB_OK);
    	res = g_p3ddevice->EndScene();
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX4", MB_OK);
    	res = g_p3ddevice->Present(NULL,NULL,NULL,NULL);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX5", MB_OK);
    };
    void init()
    {
    	res = g_p3ddevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX6", MB_OK);
    	res = g_p3ddevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX7", MB_OK);
    	res =g_p3ddevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX8", MB_OK);
    	res = g_p3ddevice->SetRenderState(D3DRS_DITHERENABLE, TRUE);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX9", MB_OK);
    
    	D3DMATRIX mproj;
    
    	mproj._11=73;
    	mproj._12=0;
    	mproj._13=0;
    	mproj._14=0;
    	mproj._21=0;
    	mproj._22=73;
    	mproj._23=0;
    	mproj._24=0;
    	mproj._31=0;
    	mproj._32=0;
    	mproj._33=1;
    	mproj._34=1;
    	mproj._41=0;
    	mproj._42=0;
    	mproj._43=0;
    	mproj._44=0;
    	res = g_p3ddevice->SetTransform(D3DTS_PROJECTION,(D3DMATRIX*)&mproj);
    	if (res) MessageBox(g_hwindow, DXGetErrorString9(res), "XXX10", MB_OK);
    
    };
    
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
    	switch(message)
    	{
    	case WM_DESTROY:
    		{
    			PostQuitMessage(0);
    			quitten=true;
    			return(0);
    		} break;
    
    	default:break;
    	}
    
    	return (DefWindowProc(hwnd,message,wparam,lparam));
    
    }
    
    int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int nshowcmd)
    {
    	MSG message;
    	D3DPRESENT_PARAMETERS presparam;
    	g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    
    	WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC, WindowProc,0,0,hinstance,LoadIcon(hinstance,IDI_APPLICATION),NULL,NULL,NULL,"gnarf",NULL};
    	wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	RegisterClassEx(&wc);
    	g_hwindow = CreateWindow("gnarf","pups",WS_VISIBLE | WS_POPUPWINDOW,0,0,1024,768,NULL,NULL,hinstance,NULL);
    	UpdateWindow(g_hwindow);
    	ZeroMemory(&presparam,sizeof(D3DPRESENT_PARAMETERS));
    	presparam.BackBufferWidth	= 1024;
    	presparam.BackBufferHeight	= 768;
    	presparam.BackBufferFormat	= D3DFMT_A8R8G8B8;
    	presparam.BackBufferCount	= 2;
    	presparam.MultiSampleType=D3DMULTISAMPLE_NONE;
    	presparam.MultiSampleQuality=0;
    	presparam.SwapEffect		=D3DSWAPEFFECT_DISCARD;
    	presparam.hDeviceWindow		=NULL;
    	presparam.Windowed			=FALSE;
    	presparam.EnableAutoDepthStencil=FALSE;
    	presparam.AutoDepthStencilFormat=D3DFMT_D32;
    	presparam.Flags				=NULL;
    	presparam.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT;
    	presparam.PresentationInterval=D3DPRESENT_INTERVAL_DEFAULT;
    	res=0;
    
    	res = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,
    							g_hwindow,D3DCREATE_HARDWARE_VERTEXPROCESSING,
    							&presparam,&g_p3ddevice);
    
    	if (res)
    	{
    		MessageBox(g_hwindow, DXGetErrorString9(res), "XXX", MB_OK);
    		return 0;
    	}
    
    	//ShowCursor(FALSE);
    	init();
    	quitten=FALSE;
    	while (!quitten)
    	{	
    
    		if(PeekMessage(&message,NULL,0,0,PM_REMOVE))
    		{
    			if(message.message == WM_QUIT)
    				break;
    
    			TranslateMessage(&message);
    			DispatchMessage(&message);
    		}
    		move();
    		render();
    
    	}
    		return 0;	
    	g_pD3D->Release();
    	g_p3ddevice->Release();
    }
    

    Entschuldigung wegen der kacke aber ich weiß keine andere lösung mehr



  • Hört sich schlimm an, probier das hier. Ansonsten debuggen oder gleich neu schreiben.

    Bye, TGGC (Der Held ist zurück)



  • Ich werde mir nicht die mühe machen das durchzusehen.
    Du könntest wenigstens den Fehler ein bisschen beschreiben.
    Aber:

    #define DEGTORAD 0,017453292519943295769236907684886
    

    würde ich in

    const float 0.017453292519943295769236907684886f;
    

    ändern

    Edit: float-iteral f hinzugefügt



  • Der Fehler ist, dass nur der Bildschirm blau wird, aber kein Dreieck gezeigt wird. Ich hab keine Idee mehr, woran das liegen könnte. Fange auch erst grade mit DirectX an...

    Das degtorad war übrigens nur zum testen und ist mittlerweile unwichtig 🙂



  • fang doch mit dem sdk beispiel "Tut03_Matrices" an. lösche alles was du für überflüssig hältst, und bau es danach immer weiter aus. dann verstehst du auch wo der fehler liegt kann wenns mal nicht mehr geht.



  • Solch ein Code dürfte garnicht erst kompiliert werden, und kann dann auch keinen blauen Bildschirm hervorrufen. Allein die fehlerhafte Vektorklasse und die fehlerhafte Kommazahl...

    Kleiner Hinweis:
    Vertexfarben sind in Direct3D keine 4 floats, sondern 1 DWORD.



  • @KXII: Danke, ich werds mir mal angucken 🙂

    @TomasRiker: Bei mir geht das Compilieren und der blaue Bildschirm wird wie gesagt auch gezeigt. Kann aber schon sein, dass der Rest ziemlich falsch ist 😞



  • olleman schrieb:

    @KXII: Danke, ich werds mir mal angucken 🙂

    @TomasRiker: Bei mir geht das Compilieren und der blaue Bildschirm wird wie gesagt auch gezeigt. Kann aber schon sein, dass der Rest ziemlich falsch ist 😞

    Meinst du einen Bluescreen? 😉



  • interpreter schrieb:

    olleman schrieb:

    @KXII: Danke, ich werds mir mal angucken 🙂

    @TomasRiker: Bei mir geht das Compilieren und der blaue Bildschirm wird wie gesagt auch gezeigt. Kann aber schon sein, dass der Rest ziemlich falsch ist 😞

    Meinst du einen Bluescreen? 😉

    hrhr, nee. Das is schon der richtige blaue Bildschirm. 🙂 Hab zum Testen auch schon die Farbe geändert 😉



  • Die Ausgaben der Debug runtimes hast du Dir selbstverständlich schon angeschaut, also unnütz darauf hinzuweisen...

    Bye, TGGC (Der Held ist zurück)



  • TomasRiker schrieb:

    Solch ein Code dürfte garnicht erst kompiliert werden, und kann dann auch keinen blauen Bildschirm hervorrufen. Allein die fehlerhafte Vektorklasse und die fehlerhafte Kommazahl...

    Stimmt, die Klammern drum fehlen 🤡 .

    #define ABC (0,0123)
    int test(int x) {
      return x;
    }
    int main() {
      test(ABC);
    }
    

    Ausserdem ist die zweite Integerkonstante zu groß.
    EDIT: MUHUHAHAHA



  • TGGC schrieb:

    Die Ausgaben der Debug runtimes hast du Dir selbstverständlich schon angeschaut, also unnütz darauf hinzuweisen...

    Bye, TGGC (Der Held ist zurück)

    öhhm natürlich 🙄
    nee, wie kann man das denn bei ms visual c++ 6.0??



  • Habe ich in einem Thread ausführlich beschrieben, lies dort nach.

    Bye, TGGC (Der Held ist zurück)



  • ahh jo. Da sind wohl n paar Fehlerchen 🙂 Werd mich ma nachher dransetzen und versuchen, die zu beheben 🙂



  • Problem gelöst. Hab mit Hilfe der Tutorials nomma neu angefangen und jetzt funzt alles 🙂 thx 🙂



  • TGGC schrieb:

    Hört sich schlimm an, probier das hier. Ansonsten debuggen oder gleich neu schreiben.

    Bye, TGGC (Der Held ist zurück)

    😃 😃 😃 loooooooooooool 😃 😃 😃



  • [wortwitz]Letzendlich lief es darauf hinaus.[/wortwitz]

    Bye, TGGC (Der Held ist zurück)



  • TGGC schrieb:

    [wortwitz]Letzendlich lief es darauf hinaus.[/wortwitz]

    Bye, TGGC (Der Held ist zurück)

    Iiiiih...!!

    Du bis' bös'...!! 🕶


Anmelden zum Antworten