| 
				
					|  | Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| Thorben 
 
 
 Anmeldungsdatum: 26.04.2005
 Beiträge: 173
 Wohnort: SH
 
 | 
			
				|  Verfasst am: 15.08.2007, 17:22    Titel: OpenGL und FBedit? |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| PMedia 
 
 
 Anmeldungsdatum: 14.08.2006
 Beiträge: 2847
 
 
 | 
			
				|  Verfasst am: 15.08.2007, 18:14    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| csde_rats 
 
  
 Anmeldungsdatum: 07.01.2007
 Beiträge: 2292
 Wohnort: Zwischen Sessel und Tastatur
 
 | 
			
				|  Verfasst am: 15.08.2007, 20:37    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| PMedia 
 
 
 Anmeldungsdatum: 14.08.2006
 Beiträge: 2847
 
 
 | 
			
				|  Verfasst am: 15.08.2007, 20:59    Titel: |   |  
				| 
 |  
				| csde, quatsch bitte kein dummes Zeug wenn du keine Ahnung hast, es ist nicht viel schwerer, als openGL mit FBGFX zu initsialisiern. |  |  
		| Nach oben |  |  
		|  |  
		| Thorben 
 
 
 Anmeldungsdatum: 26.04.2005
 Beiträge: 173
 Wohnort: SH
 
 | 
			
				|  Verfasst am: 16.08.2007, 00:27    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| PMedia 
 
 
 Anmeldungsdatum: 14.08.2006
 Beiträge: 2847
 
 
 | 
			
				|  Verfasst am: 16.08.2007, 00:47    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| Thorben 
 
 
 Anmeldungsdatum: 26.04.2005
 Beiträge: 173
 Wohnort: SH
 
 | 
			
				|  Verfasst am: 16.08.2007, 00:57    Titel: |   |  
				| 
 |  
				| Nein ich habe kein Screen verwendet. 
 MFG Thorben
 |  |  
		| Nach oben |  |  
		|  |  
		| Thorben 
 
 
 Anmeldungsdatum: 26.04.2005
 Beiträge: 173
 Wohnort: SH
 
 | 
			
				|  Verfasst am: 16.08.2007, 13:25    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| Thorben 
 
 
 Anmeldungsdatum: 26.04.2005
 Beiträge: 173
 Wohnort: SH
 
 | 
			
				|  Verfasst am: 16.08.2007, 15:47    Titel: |   |  
				| 
 |  
				| 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.
  |  |  
		| Nach oben |  |  
		|  |  
		| csde_rats 
 
  
 Anmeldungsdatum: 07.01.2007
 Beiträge: 2292
 Wohnort: Zwischen Sessel und Tastatur
 
 | 
			
				|  Verfasst am: 16.08.2007, 15:58    Titel: |   |  
				| 
 |  
				|  	  | Code: |  	  | GetDC( HandleGLWindow( GlWindowNr ) ) | 
 Du weißt schon, dass du damit einen GDI Device Context erstellst, OGL verwendet keine DCs
   
 ---
 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 |  |  
		|  |  
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 16.08.2007, 17:35    Titel: |   |  
				| 
 |  
				| ....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 |  |  
		|  |  
		| csde_rats 
 
  
 Anmeldungsdatum: 07.01.2007
 Beiträge: 2292
 Wohnort: Zwischen Sessel und Tastatur
 
 |  |  
		| Nach oben |  |  
		|  |  
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 16.08.2007, 18:10    Titel: |   |  
				| 
 |  
				|  	  | 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 |  |  
		|  |  
		| Thorben 
 
 
 Anmeldungsdatum: 26.04.2005
 Beiträge: 173
 Wohnort: SH
 
 | 
			
				|  Verfasst am: 17.08.2007, 12:00    Titel: |   |  
				| 
 |  
				| Habt ihr den auch ne Antwort auf meine Frage? 
 MFG Thorben
 |  |  
		| Nach oben |  |  
		|  |  
		| PMedia 
 
 
 Anmeldungsdatum: 14.08.2006
 Beiträge: 2847
 
 
 | 
			
				|  Verfasst am: 18.08.2007, 00:05    Titel: |   |  
				| 
 |  
				|  	  | irgendeiner (nicht ich) hat Folgendes geschrieben: |  	  | Gute Frage... nächste Frage. | 
 
     
 Ich glaube, ich nicht... ich hab aber auch gar nicht alles gelesen, sry.
 |  |  
		| Nach oben |  |  
		|  |  
		|  |  
  
	| 
 
 | 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.
 
 |  |