Buch gesucht :)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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.
  • 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 )

  • 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.
  • 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.