Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

OpenGL und FBedit?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 15.08.2007, 17:22    Titel: OpenGL und FBedit? Antworten mit Zitat

Moin,

wie kann ich mit der FBedit IDE ein OpenGL Fenster in einem WindowsFenster anzeigen? mit dem meiner alten IDE wußte ich wies geht nur hier ist es anscheind etwas schwieriger. Jedenfalls wenn man das Windows Fenster in dem Editor erstellen möchte. Kann mir von euch einer weiterhelfen?

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 15.08.2007, 18:14    Titel: Antworten mit Zitat

Nun, in diesem Falle musst du die Initialisierung selbst übernehmen... Beispiele kann ich wiedermal nur für XProfan anbieten, sollte aber portierbar sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 15.08.2007, 20:37    Titel: Antworten mit Zitat

Du willst in einem mit CreateWindow initialisiertem fenster mit OGL arbeiten?
oder in einem Dialog?

Machs besser net, denn wenn müsstest du DIREKT mit OGL verkehren => DIREKT den OGL-Treiber initialisieren...
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 15.08.2007, 20:59    Titel: Antworten mit Zitat

csde, quatsch bitte kein dummes Zeug wenn du keine Ahnung hast, es ist nicht viel schwerer, als openGL mit FBGFX zu initsialisiern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 16.08.2007, 00:27    Titel: Antworten mit Zitat

Also ich hab direkt vorher in der alten IDE das Fenster Initialiesiert und ebenfalls OpenGL( ca. 300 zeilen Quelltext ). d.h. ich weiß schon wie es geht.
Nur wenn ich versuche es mit einem Dialog zu machen( also ohne das Windows Fenster vorher selbst zu initialisieren funktioniert die Funktion
"SetPixelFormat" bei mir nicht. Ich würd gerne wissen ob und wie es mit einem Dialog geht?

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 16.08.2007, 00:47    Titel: Antworten mit Zitat

Also, so wie ich das versteh, hast du in fbIde noch Screen verwendet und nun halt ein per CreateWindowEx- / Ressoucrendatei-erstelltes Fenster, wo du die OpenGL-Ausgabe rein haben willst... oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 16.08.2007, 00:57    Titel: Antworten mit Zitat

Nein ich habe kein Screen verwendet.

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 16.08.2007, 13:25    Titel: Antworten mit Zitat

Ist es jetzt eigentlich möglich beides zu Kombinieren? ( also: selbst mit CreateWindowEx erstellte Fenster und Dialoge die mit dem Editor erstellt wurden)? Also immoment hab ich mit CreateWindowEx mein Hauptfenster erstellt. Auf dem Fenster habe ich ein ChildWindow erstellt.( wieder mit CreateWindowEx ). Das 2. Fenster habe ich dann für OpenGL initialisiert.
Funktioniert auch alles wunderbar. Nur wenn ich dann noch ein Dialog hizufügen möchte passiert folgendes. Klickt man auf den Button um den Dialog zu starten öffnet er sich die Buttons in dem Dialog funktionieren aber man kann in weder verschieben, maximierne, minimieren noch schließen über das kreutz. Wenn ich in über einen selbst erstellten button schließe, dann stürzt das haupt Fenster merkwürdig ab.

Der wichtigste code:

Starten des Dialogs und Haupt Fenster ausblenden
Code:

CASE MENUID_COPY_OBJ
   ShowWindow( hWnds( WIN_MAIN ) , SW_HIDE )
   AktiveID = 3
   DialogBoxParam( hInstance , Cast( ZSTRING PTR , 1000 ), hWnds( WIN_MAIN ) , @MainWndProc , NULL )


Das haupt verwaltungs Programm:
Code:

'===========================================================================
   FUNCTION MainWndProc ( BYVAL hWnd AS HWND, _
                          BYVAL message AS UINT, _
                          BYVAL wParam AS WPARAM, _
                          BYVAL lParam AS LPARAM ) AS INTEGER
   '===========================================================================   
         
      SELECT CASE AktiveID
         CASE 1
            IF MainWnd( hWnd , message , wParam , lParam ) THEN EXIT FUNCTION     
         CASE 2
            IF CreatePln( hWnd , message , wParam , lParam ) THEN EXIT FUNCTION     
         CASE 3
            IF CopyObj( hWnd , message , wParam , lParam ) THEN EXIT FUNCTION     
           
      END SELECT
 
      RETURN DefWindowProc( hWnd, message, wParam, lParam )
     
   END FUNCTION


Das Verwaltungs Prog für den Dialog:
Code:

'===========================================================================
   FUNCTION CopyObj( BYVAL hWnd AS HWND, _
                             BYVAL message AS UINT, _
                             BYVAL wParam AS WPARAM, _
                             BYVAL lParam AS LPARAM ) AS INTEGER
   '===========================================================================   

      SELECT CASE message
         CASE WM_INITDIALOG
            SendMessage GetDlgItem( hWnd , 1002 ), TBM_SETRANGE, 1, makelong(0, 360) 'MAKELONG(Min, Max)
             SendMessage GetDlgItem( hWnd , 1002 ), TBM_SETTICFREQ, 45,0
             SendMessage GetDlgItem( hWnd , 1009 ), TBM_SETRANGE, 1, makelong(0, 360) 'MAKELONG(Min, Max)
             SendMessage GetDlgItem( hWnd , 1009 ), TBM_SETTICFREQ, 45,0
             SendMessage GetDlgItem( hWnd , 1014 ), TBM_SETRANGE, 1, makelong(0, 360) 'MAKELONG(Min, Max)
             SendMessage GetDlgItem( hWnd , 1014 ), TBM_SETTICFREQ, 45,0
         CASE WM_COMMAND
            SELECT CASE LOWORD( wParam )
               CASE 1016
                  ShowWindow( hWnd , SW_HIDE )
                  AktiveID = WIN_MAIN
                  ShowWindow( hWnds( AktiveID ) , SW_SHOW )
                  UpdateWindow( hWnds( AktiveID ) )
                  RETURN TRUE
                 
            END SELECT
         
         CASE WM_HSCROLL
            SetWindowText( GetDlgItem( hWnd , 1005 ) , STR$( SendDlgItemMessage(hWnd,1002,TBM_GETPOS,0,0) ) )
            SetWindowText( GetDlgItem( hWnd , 1006 ) , STR$( SendDlgItemMessage(hWnd,1009,TBM_GETPOS,0,0) ) )
            SetWindowText( GetDlgItem( hWnd , 1011 ) , STR$( SendDlgItemMessage(hWnd,1014,TBM_GETPOS,0,0) ) )
         
         CASE WM_CLOSE
            ShowWindow( hWnd , SW_HIDE )
            AktiveID = WIN_MAIN
            ShowWindow( hWnds( AktiveID ) , SW_SHOW )
            UpdateWindow( hWnds( AktiveID ) )
            SetActiveWindow( hWnds( AktiveID ) )
            RETURN TRUE
               
      END SELECT
         
   END FUNCTION


MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 16.08.2007, 15:47    Titel: Antworten mit Zitat

Ok, Ich habs! Mir war das System mit den DialogBoxen noch nicht so ganz klar.( wusste nicht das die DialogBox ihre eigene Nachrichten schleife hat )
Das ganze muss einfach mit "EndDialog( hWnd , 0 )" beendet werden damit das ElternFenster wieder Freigegeben wird.

Jetzt bleibt mir nur noch die Frage ob ich auch in einer dialogBox ein Child Window erzeugen kann das ich für OpenGL initailiesiere. Und wenns geht wie?

Bis jetzt hab ichs immer so gemacht:

Code:

'===========================================================================
   SUB InitWindows()
   '===========================================================================
   
      AnzahlWindows = 1
      REDIM StyleWindow( AnzahlWindows )
      REDIM hWnds( AnzahlWindows )
     
      DIM i AS INTEGER 

      WITH StyleWindow( WIN_MAIN )
         .left    = CW_USEDEFAULT
         .top     = CW_USEDEFAULT
         .width   = 1000
         .height  = 725
         .caption = "TDgames MapEditor"
         .aktive  = TRUE
         .show    = TRUE
         .style   = WS_OVERLAPPED OR WS_SYSMENU OR WS_MINIMIZEBOX
         .parent  = NULL
      END WITH
     
      WITH wcls
         .style         = CS_HREDRAW OR CS_VREDRAW OR CS_OWNDC
         .lpfnWndProc   = @MainWndProc
         .cbClsExtra    = 0
         .cbWndExtra    = 0
         .hInstance     = hInstance
         .hIcon         = LoadIcon( NULL, IDI_APPLICATION )
         .hCursor       = LoadCursor( NULL, IDC_ARROW )
          .hbrBackground = COLOR_WINDOW
          .lpszMenuName  = NULL
          .lpszClassName = STRPTR( "TD" )
      END WITH
           
      RegisterClass( @wcls )
     
     
      FOR i = 1 TO AnzahlWindows
       
         hWnds( i ) = CreateWindowEx( NULL, _
                                      "TDgames", _
                                      StyleWindow( i ).caption, _
                                      StyleWindow( i ).style, _
                                      StyleWindow( i ).left, _
                                      StyleWindow( i ).top, _
                                      StyleWindow( i ).width, _
                                      StyleWindow( i ).height, _
                                      StyleWindow( i ).parent, _
                                      NULL, _
                                      hInstance, _
                                      NULL )
                                     
      NEXT i
                       
   END SUB
   
   
   '===========================================================================
   SUB InitGLWindow()
   '===========================================================================
           
      DIM i           AS INTEGER
     
      AnzahlGLWindows = 1
      REDIM StyleGLWindow( AnzahlGLWindows )
      REDIM HandleGLWindow( AnzahlGLWindows )
      REDIM hDC( AnzahlGLWindows )
      REDIM hRC( AnzahlGLWindows )
     
      WITH StyleGLWindow( 1 )
         .left    = 20
         .top     = 20
         .width   = 600
         .height  = 500
         .caption = "3d View"
         .aktive  = TRUE
         .show    = TRUE
         .style   = WS_CHILD OR WS_CLIPSIBLINGS OR WS_CLIPCHILDREN
         .parent  = hWnds( 1 )
      END WITH
           
      FOR i = 1 TO AnzahlGLWindows
         HandleGLWindow( i ) = CreateWindowEx( WS_EX_CLIENTEDGE, _
                                               "TDgames", _
                                               StyleGLWindow( i ).caption, _
                                               StyleGLWindow( i ).style, _
                                               StyleGLWindow( i ).left, _
                                               StyleGLWindow( i ).top, _
                                               StyleGLWindow( i ).width, _
                                               StyleGLWindow( i ).height, _
                                               StyleGLWindow( i ).parent, _
                                               NULL, _
                                               hInstance, _
                                               NULL )
                           
         pfd = TDCreatePixelFormat()

         ShowWindow( HandleGLWindow( i ) , SW_NORMAL )
         UpdateWindow( HandleGLWindow( i ) )
      NEXT i
   
   END SUB
   
   
   '---------------------------------------------------------------------------
   SUB InitOpenGL( GlWindowNr AS INTEGER )
   '---------------------------------------------------------------------------
     
      DIM PixelFormat AS UINTEGER
           
      IF( GetDC( HandleGLWindow( GlWindowNr ) ) = FALSE ) THEN                  
         MessageBox( NULL , "Can't create a GL Device Context." , "ERROR" , MB_ICONERROR )
         END
      ELSE
         hDC( GlWindowNr )=GetDC( HandleGLWindow( GlWindowNr ) )
      END IF
         
      IF( ChoosePixelFormat( hDC( GlWindowNr ) , @pfd ) = FALSE ) THEN                  
         MessageBox( NULL , "Can't find a suitable PixelFormat." , "ERROR" , MB_ICONERROR )
         END
      ELSE
         PixelFormat=ChoosePixelFormat( hDC( GlWindowNr ) , @pfd )
      END IF
       
      IF( SetPixelFormat( hDC( GlWindowNr ) , PixelFormat , @pfd ) = FALSE ) THEN                  
         MessageBox( NULL , "Can't set the PixelFormat." , "ERROR" , MB_ICONERROR )
         END
      END IF
     
      IF( wglCreateContext( hDC( GlWindowNr ) ) = FALSE ) THEN                  
         MessageBox( NULL , "Can't create a GL Rendering Context." , "ERROR" , MB_ICONERROR )
         END
      ELSE
         hRC( GlWindowNr ) = wglCreateContext( hDC( GlWindowNr ) )
      END IF
     
      IF( wglMakeCurrent( hDC( GlWindowNr ) , hRC( GlWindowNr ) ) = FALSE ) THEN                  
         MessageBox( NULL , "Can't activate the GL Rendering Context." , "ERROR" , MB_ICONERROR )
         END
      END IF
     
      glViewport( 0 , 0 , StyleGLWindow( GlWindowNr ).width , StyleGLWindow( GlWindowNr ).height )
      glMatrixMode( GL_PROJECTION )
      glLoadIdentity()
      gluPerspective( 45.0f , StyleGLWindow( GlWindowNr ).width / StyleGLWindow( GlWindowNr ).height , 0.01f , 200.0f )
      glMatrixMode( GL_MODELVIEW )
      glLoadIdentity()
     
      glEnable( GL_TEXTURE_2D )
      glShadeModel( GL_SMOOTH )           
      glBlendFunc( GL_SRC_ALPHA, GL_ONE )
      glClearColor( 0.0f , 0.0f , 0.0f , 0.0f )
      glClearDepth( 1.0f )               
      glEnable( GL_DEPTH_TEST )           
      glDepthFunc( GL_LEQUAL )             
      glHint( GL_PERSPECTIVE_CORRECTION_HINT , GL_NICEST )
           
   END SUB

 '===========================================================================
   FUNCTION TDCreatePixelFormat() AS PIXELFORMATDESCRIPTOR
   '===========================================================================   
   
      DIM pfd AS PIXELFORMATDESCRIPTOR
     
      pfd.nSize=LEN( PIXELFORMATDESCRIPTOR )
      pfd.nVersion=1
      pfd.dwFlags=PFD_DRAW_TO_WINDOW OR PFD_SUPPORT_OPENGL OR PFD_DOUBLEBUFFER
      pfd.iPixelType=PFD_TYPE_RGBA
      pfd.iLayerType=PFD_MAIN_PLANE
      pfd.cDepthBits=16
      pfd.cAccumAlphaBits=0
      pfd.cAccumBits=0
      pfd.cAccumBlueBits=0
      pfd.cAccumGreenBits=0
      pfd.cAccumRedBits=0
      pfd.cAlphaBits=0
      pfd.cAlphaShift=0
      pfd.cAuxBuffers=0
      pfd.cBlueBits=0
      pfd.cBlueShift=0
      pfd.cColorBits=16
      pfd.cGreenBits=0
      pfd.cGreenShift=0
      pfd.cRedBits=0
      pfd.cRedShift=0
      pfd.cStencilBits=0
      pfd.dwDamageMask=0
      pfd.dwLayerMask=0
      pfd.dwVisibleMask=0
     
      RETURN pfd
   
   END FUNCTION


MFG Thorben

/edit: Sorry wegen doppel post. missbilligen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 16.08.2007, 15:58    Titel: Antworten mit Zitat

Code:
GetDC( HandleGLWindow( GlWindowNr ) )

Du weißt schon, dass du damit einen GDI Device Context erstellst, OGL verwendet keine DCs zwinkern

---
Solange dein Mapeditor nicht allzu "hyper komplexe Sachen" macht, wird die GDI aber auch vollkommen ausreichend sein (Die GDI schafft bei sauberer Programmierung ca. 65536 Linien in 1,5 Sekunden => Für die meisten Sachen reicht das...)
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.08.2007, 17:35    Titel: Antworten mit Zitat

....Die GDI schafft mehr also nur 60000 Linien... Solange man Grafiken puttet, ist das viel schneller...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 16.08.2007, 17:48    Titel: Antworten mit Zitat

Darauf wollte ich ja hinaus; Für das meiste reciht die GDI vollkommen aus.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 16.08.2007, 18:10    Titel: Antworten mit Zitat

csderats hat Folgendes geschrieben:
Darauf wollte ich ja hinaus

Dein Satz erweckte eher den Eindruck, dass sie ziemlich langsam ist... Schon weil selbst ältere Rechner deutlich mehr als "nur" 60000 Zeilen setzen können, selbst ohne GDI...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 17.08.2007, 12:00    Titel: Antworten mit Zitat

Habt ihr den auch ne Antwort auf meine Frage?

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 18.08.2007, 00:05    Titel: Antworten mit Zitat

irgendeiner (nicht ich) hat Folgendes geschrieben:
Gute Frage... nächste Frage.

grinsen grinsen

Ich glaube, ich nicht... ich hab aber auch gar nicht alles gelesen, sry.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz