|
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, 22: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: 10.07.2016, 00: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: 1874 Wohnort: D59192
|
Verfasst am: 10.07.2016, 10: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, 23: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: 4597 Wohnort: ~/
|
Verfasst am: 12.07.2016, 00: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, 19: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, 21: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.
|
|