Kannst du das bitte genauer erklären? Ich habs versucht weis aber ned ganz wie ich des schreiben soll...
Buch gesucht :)
-
-
Kommt halt drauf an auf welcher Basis deine GUI aufgebaut ist. Mit nativ WinAPI könnte es so aus sehen:
-
aso okay und wie binde ich es dann in meine main ein?
-
?
-
Kein Plan wie deine main aussieht, wenn du sagst das du es in dein Programm intigrieren willst dann musst du auch wissen wie dein Programm funktioniert.
Ohne weitere Details musst du wohl einfach das stink normale createDevice verwenden welches automatisch für dich ein Fenster erstellt.
Oder meintest du mit "anderes Programm", eins von dem du gar kein Quellcode hast, weil dann ist es relativ sinnlos irgendwie zu versuchen da noch ne Erweiterung zu erstellen. -
Okay danke also ich versuche es jetzt einfach mal
-
Also ich glaub ich habe nur WinApi ich schick dir einfach mal den Fenstererstell Code:
bool OpenGL_Init::Screen_Setup( HINSTANCE hInst, int iCmdShow, int iWidth, int iHeight ) {
const char szClassName[] = "MyClassEx";
char szWindowTitle[] = "Ego - Shooter";
this->iWidth = iWidth;
this->iHeight = iHeight;
// ==== REGISTRIERUNG ==== //
WndClassEx.cbSize = sizeof( WNDCLASSEX );
WndClassEx.style = CS_OWNDC;
WndClassEx.lpfnWndProc = StaticWndProc;
WndClassEx.cbClsExtra = NULL;
WndClassEx.cbWndExtra = NULL;
WndClassEx.hInstance = hInst;
WndClassEx.hIcon = LoadIcon( NULL, IDI_APPLICATION );
WndClassEx.hCursor = LoadCursor( NULL, IDC_ARROW );
WndClassEx.hbrBackground = ( HBRUSH ) GetStockObject( BLACK_BRUSH );
WndClassEx.lpszMenuName = NULL;
WndClassEx.lpszClassName = szClassName;
WndClassEx.hIconSm = NULL;
if( !RegisterClassEx( &WndClassEx ) ) {
MessageBox( NULL, "Register Class failed", "ERROR", MB_OK | MB_ICONERROR );
return false;
} //RegisterCheck
hWnd = CreateWindow( szClassName, szWindowTitle,
dwStyle | WS_VISIBLE,
0, 0, this->iWidth, this->iHeight,
NULL, NULL, hInst, NULL );
if( !hWnd ) {
MessageBox( NULL, "Window Creation failed...", "ERROR", MB_OK | MB_ICONERROR );
return false;
} //Window Creation failed
//SetCursorPos( iWidth /2, iHeight /2 );
ShowCursor( FALSE );
return true;
} //bool OpenGL_Init::screen_setup( HINSTANCE hInst, int iCmdShow, int iWidth, int iHeight )
Und vielleicht brauchst du auch noch das:
LRESULT CALLBACK OpenGL_Init::WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) {
switch( msg ) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_SIZE:
OpenGL_Resize_Scene( LOWORD(lParam), HIWORD(lParam) );
break;
default:
return DefWindowProc( hWnd, msg, wParam, lParam );
break;
} //switch(msg)
return true;
} //LRESULT CALLBACK OpenGL_Init::WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
LRESULT CALLBACK OpenGL_Init::StaticWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) {
OpenGL_Init* pOGL_Init;
if( msg == WM_CREATE ) {
pOGL_Init = (OpenGL_Init*)( ( (LPCREATESTRUCT) lParam )->lpCreateParams );
SetWindowLongPtr( hWnd, GWL_USERDATA, (LONG_PTR) pOGL_Init );
} //if
else {
pOGL_Init = (OpenGL_Init*) GetWindowLongPtr( hWnd, GWL_USERDATA );
} //else
return pOGL_Init->WndProc( hWnd, msg, wParam, lParam );
} //LRESULT CALLBACK OpenGL_Init::StaticWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
-
Du hast offensichtlich den Code von hier: github.com/TimoNeon/OpenGL/blob/master/opengl_init.cpp
Das ist reine WinAPI bzw. OpenGL.
Wenn du mit Irrlicht arbeitest, dann brauchst du das nicht.
Halte dich einfach die Tutorials von Irrlicht und du wirst das Ziel finden. ;)
Ansonsten solltest du genauer beschreiben was du machen möchtest auser nen 3D Model zu laden. -
naja es ist halt so i h möchte keinen reinen irrlicht code haben...
-
Es ist allgemein nicht sinnvoll mehrere "Grafik-Engines zu mischen".
Dann solltest du komplett weg von Irrlicht.
Jedoch kannst du das laden, ohne genaues Wissen neben der generellen API-Standard-Elemente und der Snytax sowie über Vektor/Matrizen-Rechnung, auch knicken.
Sei mir nicht böse, aber es kommt mir so vor dass du von all dem nur begrenzt Wissen hast und ohne dieses kommst du nicht weit, von daher auch der Vorschlag was fertiges zu verwenden.
Es liegt an dir wie du vorgehen möchtest und was du zu erst lernen bzw. erreichen möchtest. -
Jap da hast du Recht, dass ich nicht der erfahrenste bin aber deswegen frag ich ja auch... naja auf jeden fall was nehmen dann richtige spieleentwickler sowie bei COD oder Just Cause etc..?
-
Da wird meistens mit einer selbstentwickelten und für das Gamegenre angepasste Engine (DirectX/OpenGL) verwendet.
In der Regel wird dann auch C++ oder auch C# als Programmiersprache und als IDE Visual Studio verwendet.
Das deutsche Entwicklerstudio Crytek zum Beispiel hat seine CryEngine für nicht kommerzielle Spiele freigegeben. Was du dir auch anschauen kannst. -
hmm okay das ist ja für mich schwer möglich sowas zu entwickeln.. Was würdest du mir dann raten was ich machen sollte?
-
Mein Rat wäre erst mal mit einfachen Sachen anzufangen, ggf. zu nächst ein 2D Spiel.
(siehe auch von mir das Spiel Connect was ich während einem Semester neben bei Programmiert hatte)
Und dann ggf. irgendetwas mit Irrlicht in 3D. Es gibt noch sicher andere gute Engines, ich persönlich hab mit dieser kurz gearbeitet und fand die relativ einfach zu verstehen. -
Was soll ich machen, wenn ich dann meine 3D - Irrlicht Engine fertig habe?
-
Und noch eine und zwar:
Ich bin gerade bei den Collisions meines Models hab aber ein Problem:
Bei der Quake 3D Map, die man laden kann sieht man ja in den Blöcken oder unter der Map ( also ohne Collisions ) manche Formen nicht. Und bei meiner File ist es so, dass ich mehrere Formen nicht sehe wie kann ich das ändern? ( Hoffe du verstehst was ich meine ) -
Ich denke das wird etwas mit Backface Culling zu tuen haben. Für jedes Dreieck, aus welchen die Objekte bestehen, wird eine Vorder- und Rückseite definiert (genauer durch den Normalenvektor bestimmt).
Um Rechenleistung zu sparen werden Standardmäßig alle Rückseiten nicht angezeigt da von geschlossenen Objekten ausgegangen wird und innen man sich normalerweise sowieso nicht befindet.
Also in der Map die Ausrichtung der betroffenen Objekte prüfen oder mal Backface Culling (offenscihtlich geht die Einstellung auch für Frontface) bei Irrlicht einschalten. -
Okay, danke und nochmal zur anderen frage: Was soll ich (/ hast du ) nach deiner irrlicht engine getan?
-
Du meinst was ich nach dem Arbeiten mit der Irrlicht Engine gemacht habe bzw. was ich verfolgt habe?
Naja eigentlich beschäftige ich mich mit 3D Programmierung nicht mehr, programmiere meistens nur irgendwelche kleinen Programme zur Steuerung von (selbstgebauten) elektronischen Geräten. -
Und was ratest du mir?
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
- Reddit 0
-
Benutzer online 1
1 Besucher