DirectX vs OpenGL



  • LiquidAcid schrieb:

    Aufpassen, er bastelt grade seine eigenen graphics API - NOCH LÄNGER 😮 😮
    PIMP

    cya
    liquid

    wie klein die welt doch ist



  • ChockoCookie schrieb:

    Genau 😃
    Man beurteilt C++ ja auch nicht nach der Bedienbarkeit der Compiler

    Ach nein?!?

    Gut, genau genommen musst Du DirectX auch nicht initialisieren.
    Sobald Du Dein Render-Device hast, kann es direkt los gehen... 🤡 👍

    ChockoCookie schrieb:

    PS: Wow, ich bin grad auf die Smiley-begrenzung gestossen. LOL
    Nukem, wie gehst du eigentlich mit dieser Beschneidung deines Freiraums um?

    Tja... ich werde dann immer manisch depressiv und schließe mich so lange im Keller ein, bis meine Freundin voller Sorge an die Türe klopft, wo ich denn wär'... 😞



  • Sollte das Windows-Fenster nicht eigendlich schwarz sein?
    Kann mir mal bitte jemand einen kompletten DirectX-Initialisier-Die-Device-Schnittstelle Quellcode posten?



  • roan312 schrieb:

    Sollte das Windows-Fenster nicht eigendlich schwarz sein?
    Kann mir mal bitte jemand einen kompletten DirectX-Initialisier-Die-Device-Schnittstelle Quellcode posten?

    Wo hast Du denn Probleme? 😕

    #pragma comment(lib, "d3d9.lib")
    #define WIN32_LEAN_AND_MEAN
    #include <d3d9.h>
    
    DWORD Farbe = D3DCOLOR_XRGB(0, 0, 0);
    
    LRESULT CALLBACK WinMessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	static int no = 0;
    
    	switch(msg)
    	{
    		case WM_TIMER :
    			switch(no)
    			{
    				case 0 :
    					Farbe = D3DCOLOR_XRGB(255, 0, 0);
    					break;
    				case 1 :
    					Farbe = D3DCOLOR_XRGB(0, 0, 255);
    					break;
    				default :
    					Farbe = D3DCOLOR_XRGB(255, 255, 0);
    					break;
    			}
    			no++;
    			if(no >= 3) no = 0;
    			break;
    
    		default :
    			return (DefWindowProc(hWnd, msg, wParam, lParam));
    	}
    
    	return 0;
    }
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
    {
        WNDCLASSEX WinKlasse = {
    		sizeof(WNDCLASSEX),
    		CS_DBLCLKS	| CS_OWNDC | CS_HREDRAW | CS_VREDRAW,
    		WinMessageHandler,
    		0,
    		0,
    		NULL, //
    		LoadIcon(NULL, IDI_WINLOGO),
    		LoadCursor(NULL, IDC_ARROW),
    		(HBRUSH)GetStockObject(WHITE_BRUSH),
    		NULL,
    		"Klasse",
    		LoadIcon(NULL, IDI_WINLOGO)
    	};
    
        RegisterClassEx(&WinKlasse);
    
    	HWND hWnd = CreateWindowEx(NULL, "Klasse", "Test", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0,
    							800, 600, NULL, NULL, /**/ NULL, NULL);
    
    	LPDIRECT3D9 lpD3D = Direct3DCreate9(D3D_SDK_VERSION);
    
        D3DPRESENT_PARAMETERS PParams;
        ZeroMemory(&PParams, sizeof(PParams));
    
        PParams.SwapEffect		= D3DSWAPEFFECT_DISCARD;
        PParams.hDeviceWindow	= hWnd;
        PParams.Windowed		= true;
    
        PParams.BackBufferWidth		= 800;
        PParams.BackBufferHeight	= 600;
        PParams.BackBufferFormat	= D3DFMT_A8R8G8B8;
    
    	LPDIRECT3DDEVICE9 lpD3DDevice;
        lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &PParams, &lpD3DDevice);
    
    	SetTimer(hWnd, 0, 500, (TIMERPROC)NULL);
    
    	MSG msg;
    
        while(true)
    	{
    		if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
    		{
                TranslateMessage(&msg);
                DispatchMessage(&msg);
    		}
    
    		lpD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, Farbe, 0, 0);
            lpD3DDevice->Present(NULL, NULL, NULL, NULL);
    
            Sleep(100);
    	}
    
    	return 0;
    }
    

    ACHTUNG: Null Fehlerüberprüfung, von richtigem Beenden und Freigeben ganz zu schweigen... ⚠

    🤡 👍



  • Danke Sgt. Nukem, mein Buch über DX und so (David Scherfgen) nutzt für die Initialisierung Hilfsfunktionen einer mitgebrachten Engine, - und die will numal ich nicht benutzen.
    Ich hab mir da selbst sowas zusammengewurschtelt, da ist das fenster aber nur ein Windows fenster (grau).
    Jetzt kann ich endlich DX ohne die Engine initialisieren, THX!
    Aber streng genommen ist das Fenster auch nicht schwarz... :p



  • Naja, ob das so sinnvoll ist, Dir selbst etwas "zusammenzuwurschteln", wo Du doch eine Engine mitgeliefert bekommst...?!? 😕



  • Es geht mir ja nicht darum mit der TriBase Engine programmieren zu können,
    sondern selbst mit DirectX9 was anzustellen.
    Ansonsten könnte ich ja auch mit Irrlicht weitermachen. 💡

    PS.: Könntest du mal eine Projektionsmatrik einbauen?
    (TB_GET_PROJEKTION_MATRIX(...) 😞 )



  • roan312 schrieb:

    Es geht mir ja nicht darum mit der TriBase Engine programmieren zu können,
    sondern selbst mit DirectX9 was anzustellen.
    Ansonsten könnte ich ja auch mit Irrlicht weitermachen. 💡

    PS.: Könntest du mal eine Projektionsmatrik einbauen?
    (TB_GET_PROJEKTION_MATRIX(...) 😞 )

    ROFL, und danach bau' ich Deinen Shooter weiter, was?! 😃

    Guck' doch mal in den Source von TB_GET_PROJEKTION_MATRIX() ... 👍



  • scherfgen erklärt zwar vorher jede einzelne zeile des codes der funktionen ausführlich, aber man kann damit kein dx initialisieren,nein das geht nicht 🙄



  • otze schrieb:

    scherfgen erklärt zwar vorher jede einzelne zeile des codes der funktionen ausführlich, aber man kann damit kein dx initialisieren,nein das geht nicht 🙄

    Nicht ganz, er erklärt zwar vieles, auf die EnumParameter...dingsbums funktion und die Projektionsmatrix geht er aber leider überhaupt nicht ein.
    (Auch im Mathematikteil ist nur der Sinn der Projektionsmatrix erwähnt, nicht erklärt oder zummindest als Beispiel abgedruckt)
    Ich werde Nukems Rat mal befolgen und mich durch die Sources arbeiten.



  • Der Sinn der Projektionsmatrix?

    Na, sie projeziert Deinen 3D-Raum auf die 2D-Oberfläche des Bildschirms.


  • Mod

    Sgt. Nukem schrieb:

    Der Sinn der Projektionsmatrix?

    multiplizieren mit anderen vectoren/matrizen.

    nun muss es aber jeder verstehen 👍

    rapso->greets();



  • rapso schrieb:

    Sgt. Nukem schrieb:

    Der Sinn der Projektionsmatrix?

    multiplizieren mit anderen vectoren/matrizen.

    nun muss es aber jeder verstehen 👍

    rapso->greets();

    Arghhhhh, das steht ja gerade drinne, halt nur nicht wie man eine selbst aufbaut!
    Irgendwo in den Sources müsste das aber zu finden sein.


  • Mod

    roan312 schrieb:

    rapso schrieb:

    Sgt. Nukem schrieb:

    Der Sinn der Projektionsmatrix?

    multiplizieren mit anderen vectoren/matrizen.

    nun muss es aber jeder verstehen 👍

    rapso->greets();

    Arghhhhh, das steht ja gerade drinne, halt nur nicht wie man eine selbst aufbaut!
    Irgendwo in den Sources müsste das aber zu finden sein.

    das sollte von mir ja auch ironie sein. nicht aufregen. ich hätte auch schreiben können dass man einen linksdrehendensalomesischenkräfteausgleicher zum ausgleichen braucht genau wie die projektionsmatrix zum projezieren (wie es der nukem behauptete)

    rapso->greets();



  • @rapso: Hab' Deine Ironie irgendwie nicht verstanden... 😕

    @roan312: Hier wird gezeigt, wie'de so'n Ding selber baust.



  • Ich fands lustich.

    Bye, TGGC (Wähle deine Helden)



  • Sgt. Nukem schrieb:

    @rapso: Hab' Deine Ironie irgendwie nicht verstanden... 😕

    @roan312: Hier wird gezeigt, wie'de so'n Ding selber baust.

    @rapso: Ich auch nicht.

    @nukem: Danke für den Link, dürfte mir helfen.

    Die Implementierung der Funktion hab ich auch schon gefunden, falls es jemanden interessiert, sie steht in der

    .\src\tbMatrix.cpp

    .



  • groovemaster schrieb:

    Blue-Tiger schrieb:

    wusstest du dass C nichtmal 40 Schluesselwoerter hat 😉

    Doch so viel? Hätte jetzt glatt auf weniger getippt. 🙂

    Tja nur mit den Schlüsselwörtern allein kommst du nicht weit...
    Dazu kommen noch min.das 10 fache der Menge an Bibliotheksfunktionen dazu:-)und ein sehr gutes Verständnis in Mathe zwecks den Allgos ist ein muß.


Anmelden zum Antworten