  | 
					
						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 | 
	 
	
		eyproey
 
 
  Anmeldungsdatum: 09.07.2016 Beiträge: 3
 
  | 
		
			
				 Verfasst am: 09.07.2016, 21:11    Titel: FREEBASIC OpenGl Transparente Texturen | 
				     | 
			 
			
				
  | 
			 
			
				Guten Tag.
 
Ich arbeite nun schon seid einer  zeit mit OpenGl innerhalb von FreeBasic   
 
Nun gibt es die Möglichkeit innerhalb des Texturierten 2D bereiches mit ,Trans  einen Pinken Farbton "aus-zu-Key´n".
 
Diese Funktion währe wahnsinnig nützlich für OpenGl.
 
es währe wunderbar wenn mich jemand darüber belehren würde wie das ganze denn funktionieren kann, oder ob FB dort seine grenzen erreicht.
 
 
Mfg eypro            | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Jojo alter Rang
  
  Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
  | 
		
			
				 Verfasst am: 09.07.2016, 23:23    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				In OpenGL kannst du einfach echte 8-Bit-Transparenz verwenden ohne dafür eine spezielle Farbe (Pink) opfern zu müssen. Dazu muss der Alphakanal bei den entsprechenden Pixeln auf 0 gesetzt werden. Das PNG-Grafikformat eignet sich z.B. optimal für Texturen mit Transparenz, da es den Alphakanal unterstützt. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 
  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		volta
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
  | 
		
			
				 Verfasst am: 10.07.2016, 09:50    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hi, als Ergänzung zu Jojos Aussage,
 
ein altes Beispiel :
 
 	  | Code: | 	 		  #Include "windows.bi"
 
#Include "GL/glu.bi"
 
 
Sub RenderScene
 
  Static rtri As Single
 
  glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
 
  glPushMatrix
 
 
  glLoadIdentity
 
  glTranslatef 0.0, 0.0, -4.0
 
  glRotatef rtri, 0, 1, 0
 
 
  glBegin GL_TRIANGLES
 
  glColor3f   1.0, 0.0, 0.0                        'Red
 
  glVertex3f  0.0, 1.0, 0.0                        'Top Of Triangle  Front)
 
  glColor3f   0.0, 1.0, 0.0                        'Green
 
  glVertex3f -1.0,-1.0, 1.0                        'Left Of Triangle  Front)
 
  glColor3f   0.0, 0.0, 1.0                        'Blue
 
  glVertex3f  1.0,-1.0, 1.0                        'Right Of Triangle  Front)
 
  glColor3f   1.0, 0.0, 0.0                        'Red
 
  glVertex3f  0.0, 1.0, 0.0                        'Top Of Triangle  Right)
 
  glColor3f   0.0, 0.0, 1.0                        'Blue
 
  glVertex3f  1.0,-1.0, 1.0                        'Left Of Triangle  Right)
 
  glColor3f   0.0, 1.0, 0.0                        'Green
 
  glVertex3f  1.0,-1.0,-1.0                        'Right Of Triangle  Right)
 
  glColor3f   1.0, 0.0, 0.0                        'Red
 
  glVertex3f  0.0, 1.0, 0.0                        'Top Of Triangle  Back)
 
  glColor3f   0.0, 1.0, 0.0                        'Green
 
  glVertex3f  1.0,-1.0,-1.0                        'Left Of Triangle  Back)
 
  glColor3f   0.0, 0.0, 1.0                        'Blue
 
  glVertex3f -1.0,-1.0,-1.0                        'Right Of Triangle  Back)
 
  glColor3f   1.0, 0.0, 0.0                        'Red
 
  glVertex3f  0.0, 1.0, 0.0                        'Top Of Triangle  Left)
 
  glColor3f   0.0, 0.0, 1.0                        'Blue
 
  glVertex3f -1.0,-1.0,-1.0                        'Left Of Triangle  Left)
 
  glColor3f   0.0, 1.0, 0.0                        'Green
 
  glVertex3f -1.0,-1.0, 1.0                        'Right Of Triangle  Left)
 
  glEnd
 
  glPopMatrix
 
  rtri = rtri + 2.0
 
  Flip
 
End Sub
 
 
ScreenRes 640, 480, 32,,2 Or 8 'OpenGL-Modus ohne Rahmen
 
Dim As HWND hwnd
 
ScreenControl(2 ,Cast(Integer, hwnd)) 'GET_WINDOW_HANDLE
 
SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_LAYERED 'erweiterter Fensterstil setzen
 
SetLayeredWindowAttributes(hwnd, 0, 0, LWA_COLORKEY)'Transparenzinformationen zuweisen
 
 
glViewport 0, 0, 640, 480                      ' Reset The Current Viewport
 
glMatrixMode GL_PROJECTION                     ' Select The Projection Matrix
 
glLoadIdentity                                 ' Reset The Projection Matrix
 
gluPerspective 45.0, 640.0/480.0, 0.1, 100.0   ' Calculate The Aspect Ratio Of The Window
 
glMatrixMode GL_MODELVIEW                      ' Select The Modelview Matrix
 
glLoadIdentity                                 ' Reset The Modelview Matrix
 
glEnable GL_DEPTH_TEST
 
 
'Transparent-OpenGL-window
 
'glEnable GL_BLEND
 
'glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
 
glClearColor 0, 0, 0, 0
 
 
Do
 
  RenderScene
 
  Sleep 1       'CPU entlasten
 
Loop While InKey = "" | 	  
 
Lief auch auf Windows 10 im 64Bit Modus (FB 1.04 64Bit). _________________ Warnung an Choleriker: 
 
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
 
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		eyproey
 
 
  Anmeldungsdatum: 09.07.2016 Beiträge: 3
 
  | 
		
			
				 Verfasst am: 11.07.2016, 22:17    Titel: Vielen dank für schnelle gute AW | 
				     | 
			 
			
				
  | 
			 
			
				| Leider weiß ich nicht mit welchem Programm ich ein .bmp bild einzelne Pixel auf 0 setzen kann. Oder kann ich das innerhalb von fb machen ? | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		nemored
 
  
  Anmeldungsdatum: 22.02.2007 Beiträge: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 11.07.2016, 23:26    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Was meinst du mit "auf 0 setzen"? Der Farbwert 0 ist ganz einfach komplett schwarz, das ist also mit keinem Bildbearbeitungsprogramm, das ich kenne, ein Problem. Aber mit FreeBASIC geht das natürlich auch. (Stichwort PSET)
 
 
Wenn das Problem die Transparenz ist (Alphakanal auf 0 setzen): BMP unterstützt von der Spezifikation her eigentlich keinen Alphakanal, weshalb es mit vielen Bildbearbeitungsprogrammen schwierig wird. GIMP kann auf jeden Fall mit Alphakanal in BMP-Bildern umgehen. Ich kann jetzt aber nicht sagen, ob dann möglicherweise wieder das Betriebssystem einen Strich durch die Rechnung machen könnte. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		eyproey
 
 
  Anmeldungsdatum: 09.07.2016 Beiträge: 3
 
  | 
		
			
				 Verfasst am: 13.07.2016, 18:40    Titel: Oh dann war das wohl ein missverständniss | 
				     | 
			 
			
				
  | 
			 
			
				Hat denn jemand Lust und Zeit mir eine lehr - Stunde geben was PNG Bilder für OpenGL angeht ?
 
Wie man sie vom Datenträger aufnimmt...
 
was den BLOAD ersetzt...
 
Wie man Die Blau/Rot Werte ersetzt
 
Ich werde dann in Gimp mit Transparenz arbeiten und als .PNG abspeichern und schauen ob ich dann mit transparenten Bildern innerhalb von OpenGL arbeiten darf.      | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Elor
 
 
  Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
  | 
		
			
				 Verfasst am: 13.07.2016, 20:19    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | eyproey hat Folgendes geschrieben: | 	 		  
 
… Wie man sie vom Datenträger aufnimmt... 
 
was den BLOAD ersetzt... 
 
 | 	  
 
Ich würde dir die FBImage-lib empfehlen. Damit kannst Du BMP, PNG, JPG, TGA und DDS Formate laden. | 
			 
		  | 
	 
	
		| 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.
  | 
   
 
     |