DirectX vs OpenGL
-
TGGC schrieb:
...
*heisse Luft*
...LOL, du bist doof

Du tust ja nicht mal so, als würdest du stichhaltige Argumente bringen und verdirbst damit das Flamewar - Erlebnis für alle anderen. *pfui pfui*
und du hast keine Ahnung
Sgt. Nukem schrieb:
Keine Ahnung was für ein DX Du so benutzt...

Normalerweise gar keines ...
Und mit dem Code den du gepostet hast, initialisierst du nicht OpenGL, sondern das Windowing-System, in diesem Fall WGL.
Aber die Länge des typischen init-Codes ist sowieso nur für Kinder interessant.
zB solche, die sich freuen, dass man bei DX ein Mesh mit einem Functioncall laden kann ...
-
ChockoCookie schrieb:
Und mit dem Code den du gepostet hast, initialisierst du nicht OpenGL, sondern das Windowing-System, in diesem Fall WGL.
Hahaha... sehr witzig!

Klar, ich kann ein paar ganz abstrakte multiplattformfähige Schinken wie OpenGL proggen, und dann alles an Anwendungscode, den ich brauche, um diese "abstrakte Blackbox" an ein real existierendes Windowing-System zu binden (Windows-API) nach dem Motto "Hat ja mit OpenGL nix zu tun! Ist der Init-Code für was ganz anderes!" abhaken...

ChockoCookie schrieb:
Aber die Länge des typischen init-Codes ist sowieso nur für Kinder interessant.
Mhhhh... lass mich überlegen... Wer interessierte sich als Einziger für den Init-Code?!?
Achja... das war ChockoCookie!!

ChockoCookie schrieb:
zB solche, die sich freuen, dass man bei DX ein Mesh mit einem Functioncall laden kann ...
Du solltest wirklich auf Embedded-System in Assembler (oder direkt in HEX-Code) ein paar Grafik-Sachen machen.
Diese Function-Calls die einem die ganze Arbeit abnehmen, wie z.B. glVertex3f(1.0f, 5.6f, -0.5f); sind ja nun wirklich für Kinder!

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

PIMPcya
liquid
-
Sgt. Nukem schrieb:
Klar, ich kann ein paar ganz abstrakte multiplattformfähige Schinken wie OpenGL proggen, und dann alles an Anwendungscode, den ich brauche, um diese "abstrakte Blackbox" an ein real existierendes Windowing-System zu binden (Windows-API) nach dem Motto "Hat ja mit OpenGL nix zu tun! Ist der Init-Code für was ganz anderes!" abhaken...
Genau

Man beurteilt C++ ja auch nicht nach der Bedienbarkeit der CompilerSgt. Nukem schrieb:
Mhhhh... lass mich überlegen... Wer interessierte sich als Einziger für den Init-Code?!?
Achja... das war ChockoCookie!!Ach Unsinn!
Alle haben es gedacht, ich habe es nur ausgesprochen.
Sgt. Nukem schrieb:
Du solltest wirklich auf Embedded-System in Assembler (oder direkt in HEX-Code) ein paar Grafik-Sachen machen.
In so einer beschissenen Lage nützt einem eine Funktion für ein Mesh auch nichts mehr ..

Sgt. Nukem schrieb:
Diese Function-Calls die einem die ganze Arbeit abnehmen, wie z.B. glVertex3f(1.0f, 5.6f, -0.5f); sind ja nun wirklich für Kinder!
Böte die OpenGL API Mittel sie nachzuprogrammieren, weinte ich ihnen keine Träne nach.
:p"Wir brauchen keine eigenen Funktionen zu schreiben. DX hat sooooo viele Funktionen dabei, da macht man ein ganzes Spiel mit < 70 Zeilen" ROFL
@ LiquidAcid: wow, der Typ ist mein neuer Held. EIn Fall für
TEEEE GEEE GEEE CEEEEEHEEEE !!!!!PS: Wow, ich bin grad auf die Smiley-begrenzung gestossen. LOL
Nukem, wie gehst du eigentlich mit dieser Beschneidung deines Freiraums um?
-
Sgt. Nukem schrieb:
ChockoCookie schrieb:
- Also Fazit:
Das erste Mesh ist in DX einfacher (wiegt der Code für nen kleinen Modelloader eigentlich den DX initcode auf).
Keine Ahnung was für ein DX Du so benutzt...

Unter Windows mach' ich (ohne Fehlerbehandlung):
m_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; m_lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &PParams, &m_lpD3DDevice);und kann dann rendern.
Daaaaaaaaanke für den Code, mein Buch erklärt das nicht so richtig und nutzt solche scheiß mitgelieferten Hilfsfunktionen, die saueng mit der WinAPI, also leider für mich unlesbar, verknüpft sind.
ENDLICH hab ich meine Device-Schnittstelle erstellt:

- Also Fazit:
-
//EDIT: Doppelt?
-
LiquidAcid schrieb:
Aufpassen, er bastelt grade seine eigenen graphics API - NOCH LÄNGER

PIMPcya
liquidwie klein die welt doch ist
-
ChockoCookie schrieb:
Genau

Man beurteilt C++ ja auch nicht nach der Bedienbarkeit der CompilerAch 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.
-
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.
-
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();