Falsche Farben und Text bei OpengL

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Falsche Farben und Text bei OpengL

Beitrag von ccode_new »

Hallo Leute!

1. Frage:
Wie bekomme ich die richtigen Farben bei einer OpenGL-Textur ?

2. Frage:
Wie könnte man am besten Text in OpenGL darstellen ?

Ein Bild als Text-Textur zu verwenden wäre eine Lösung, aber gibt es bessere ?

Hier mal ein kleines Beispiel:

Code: Alles auswählen

; ImportC "-lglut"
;   glutBitmapCharacter(font, character)
; EndImport

UsePNGImageDecoder()
UseJPEGImageDecoder()

#IMG_24 = 0
#IMG_32 = 1

#GL_CLAMP_TO_EDGE=$812F

Global GTex.i
Global img_w.i, img_h.i

Procedure glDraw3DColor(col)
  Protected r.f, g.f, b.f
  r = (1 / 255 * Red(col))
  g = (1 / 255 * Green(col))
  b = (1 / 255 * Blue(col))
  glColor3f_(r,g,b)
EndProcedure

Procedure glClear()
  glClear_(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
EndProcedure

Procedure glDraw3DPoint(x.f,y.f,z.f)
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  glBegin_(#GL_POINTS)
  glVertex3f_(x,y,z)
  glEnd_()
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure glDraw3DLine(x1.f,y1.f,z1.f,x2.f,y2.f,z2.f)
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  glBegin_(#GL_LINE_STRIP)
  glVertex3f_(x1,y1,z1)
  glVertex3f_(x2,y2,z2)
  glEnd_()
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure glDraw3DBox(x1.f,y1.f,z1.f,w.f,h.f,flag.b=#False)
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  If flag = #True
    ;FILLED
    glBegin_(#GL_QUADS)
    glVertex3f_(x1,y1,z1)
    glVertex3f_(x1+w,y1,z1)
    glVertex3f_(x1+w,y1+h,z1)
    glVertex3f_(x1,y1+h,z1)
    glEnd_()
  ElseIf flag = #False
    ;UNFILLED
    glBegin_(#GL_LINE_LOOP)
    glVertex3f_(x1,y1,z1)
    glVertex3f_(x1+w,y1,z1)
    glVertex3f_(x1+w,y1+h,z1)
    glVertex3f_(x1,y1+h,z1)
    glVertex3f_(x1,y1,z1)
    glEnd_()
  EndIf
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure glDraw3DEllipse(x.f,y.f,z.f,rx.f,ry.f,flag.b=#False)
  Protected i=0, n
  If rx > ry
    n = rx*10
  Else
    n = ry*10
  EndIf
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  If flag = #True
    ;FILLED
    glBegin_(#GL_POLYGON)
    For i = 0 To n
      glVertex3f_(rx * Cos(i) + x, ry * Sin(i) + y, z)
    Next i
    glEnd_()
  ElseIf flag = #False
    ;UNFILLED
    glBegin_(#GL_POINTS)
    For i = 0 To n
      glVertex3f_(rx * Cos(i) + x, ry * Sin(i) + y, z)
    Next i
    glEnd_()
  EndIf
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure glDraw3DTriangle(x1.f,y1.f,z1.f,x2.f,y2.f,z2.f,x3.f,y3.f,z3.f,flag.b=#False)
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  If flag = #True
    ;FILLED
    glBegin_(#GL_TRIANGLES)
    glVertex3f_(x1,y1,z1)
    glVertex3f_(x2,y2,z2)
    glVertex3f_(x3,y3,z3)
    glEnd_()
  ElseIf flag = #False
    ;UNFILLED
    glBegin_(#GL_LINE_LOOP)
    glVertex3f_(x1,y1,z1)
    glVertex3f_(x1+w,y1,z1)
    glVertex3f_(x1+w,y1+h,z1)
    glVertex3f_(x1,y1+h,z1)
    glVertex3f_(x1,y1,z1)
    glEnd_()
  EndIf
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure glDraw3DArc(x.f,y.f,r.f,startAngle.f,drawAngle.f,z.f)
  Protected n = r*10, i = 0
  Protected ta.f = Radian(-drawAngle) / (n-1)
  Protected tf.f = Tan(ta)
  Protected rf.f = Cos(ta)
  Protected xx.f = r * Cos(Radian(-startAngle))
  Protected yy.f = r * Sin(Radian(-startAngle))
  Protected tx.f, ty.f
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  glBegin_(#GL_POINTS)
  For i = 0 To n
    glVertex3f_(xx + x, yy + y, z)
    tx = -yy
    ty = xx
    xx + tx * tf
    yy + ty * tf
    xx * rf
    yy * rf
  Next  i
  glEnd_()
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure.i glCreateImage(ImageID.i,Type.i)
  ;Protected.i img_w, img_h
  Protected.i MemID, TexID
  
  If IsImage(ImageID) = 0
    ProcedureReturn #False
  EndIf
  
  glGenTextures_(1, @TexID)
  glBindTexture_(#GL_TEXTURE_2D, TexID)
  
  If StartDrawing(ImageOutput(ImageID))
    MemID = DrawingBuffer()
    StopDrawing()
  EndIf
  
  If MemID = 0
    ProcedureReturn #False
  EndIf
  
  img_w = ImageWidth(ImageID)
  img_h = ImageHeight(ImageID)
  
  If Type = 1
    glTexImage2D_(#GL_TEXTURE_2D, 0, 4, img_w, img_h, 0, #GL_RGBA, #GL_UNSIGNED_BYTE, MemID)
  Else
    glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGBA, img_w, img_h, 0, #GL_RGB, #GL_UNSIGNED_BYTE, MemID)
  EndIf
  
  
  glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_LINEAR)
  glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_LINEAR)
  ;   glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_S, #GL_CLAMP_TO_EDGE)
  ;   glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_T, #GL_CLAMP_TO_EDGE)
  
  ProcedureReturn TexID
EndProcedure

Procedure glDraw3DImage(x.f,y.f,z.f,TexID.i)
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW) 
  glBindTexture_(#GL_TEXTURE_2D, TexID)
  glEnable_(#GL_TEXTURE_2D)
  glBegin_(#GL_POLYGON)
  glTexCoord3f_(0,0,z)
  glVertex3f_(x,y,z)
  glTexCoord3f_(1,0,z)
  glVertex3f_(x+img_w,y,z)
  glTexCoord3f_(1,1,z)
  glVertex3f_(x+img_w,y+img_h,z)
  glTexCoord3f_(0,1,z)
  glVertex3f_(x,y+img_h,z)
  glEnd_()
  glDisable_(#GL_TEXTURE_2D)
  glBindTexture_(#GL_TEXTURE_2D, 0)
  ;glFlush_()
  
  glPopMatrix_()
  glFinish_()
EndProcedure

Procedure glDraw3DText(x.f,y.f,z.f,text.s) ;TODO
  If text=""
    ProcedureReturn #False
  EndIf
  glRasterPos3f_(x,y,z)
EndProcedure

Procedure glRender()
  SetGadgetAttribute(GadgetHandle, #PB_OpenGL_SetContext, #True)
  ;glDisable_(#GL_LIGHTING)
  glClear()
  
  glDraw3DColor(RGB(255,255,0))
  
  glDraw3DText(0,20,0,"Hallo!") ;TODO
  
  For t = 0 To 100
    glDraw3DPoint(600+t,200,0)
  Next t
  glDraw3DLine(5,300,0,795,300,0)
  glDraw3DColor(RGB(255,0,255))
  glDraw3DBox(300,40,0,200,200,1)
  glDraw3DColor(RGB(255,0,0))
  glDraw3DEllipse(400,400,2,40,40,0)
  glDraw3DTriangle(10,200,0,200,200,0,105,100,0,1)
  glDraw3DArc(100, 500, 90, 0, 270, 0)
  glDraw3DColor(RGB(255,255,0))
  glDraw3DImage(300,320,0,GTex)
  ;glDraw3DBox(300,320,1,128,128,1)
  glFinish_()
  SetGadgetAttribute(0, #PB_OpenGL_FlipBuffers, #True)
EndProcedure

Procedure glInit()
  ;glMatrixMode_(#GL_MODELVIEW)
  glOrtho_(0.0, WindowWidth(0), WindowHeight(0), 0.0, -10.0, 10.0)
  glEnable_(#GL_SMOOTH)
  glEnable_(#GL_DEPTH_TEST)
  glEnable_(#GL_TEXTURE_2D)
  ;glPolygonMode_(#GL_FRONT_AND_BACK, #GL_LINE_SMOOTH)
  glViewport_(0, 0, WindowWidth(0), WindowHeight(0))
EndProcedure

Procedure glError(Result, Text$)
  If Result = 0
    MessageRequester("Error", Text$, 0)
    End
  EndIf
EndProcedure

CreateImage(0, 128, 128, 24)
StartDrawing(ImageOutput(0))
Box(0, 0, 64, 64, RGB(255,0,0))
Box(64, 0, 64, 64, RGB(0,255,0))
Box(0, 64, 64, 64, RGB(0,255,255))
Box(64, 64, 64, 64, RGB(255,255,255))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10, 100, "Wrong Color", RGB(0,0,0))
StopDrawing()

OpenWindow(0, 0, 0, 800, 600, "OpenGL - Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered |#PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

OpenGLGadget(0, 0, 0, WindowWidth(0), WindowHeight(0))

glInit()

GTex = glCreateImage(0,#IMG_24)

AddWindowTimer(0, 1, 16)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_SizeWindow
      ResizeGadget(0, #Null, #Null, WindowWidth(0), WindowHeight(0))
      
    Case #PB_Event_Timer
      If EventTimer() = 1
        glRender()
      EndIf
  EndSelect
  
Until Event = #PB_Event_CloseWindow
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Falsche Farben und Text bei OpengL

Beitrag von Mijikai »

Gehen die Farben damit ?

Code: Alles auswählen

If Type = 1
    glTexImage2D_(#GL_TEXTURE_2D, 0, 4, img_w, img_h, 0, #GL_BGRA_EXT, #GL_UNSIGNED_BYTE, MemID)
  Else
    glTexImage2D_(#GL_TEXTURE_2D, 0, 3, img_w, img_h, 0, #GL_BGR_EXT, #GL_UNSIGNED_BYTE, MemID)
  EndIf
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Falsche Farben und Text bei OpengL

Beitrag von ccode_new »

Nein!

Wenn ich es so mache ist die Darstellung komplett falsch!
Mijikai hat geschrieben:Gehen die Farben damit ?
Code:
If Type = 1
glTexImage2D_(#GL_TEXTURE_2D, 0, 4, img_w, img_h, 0, #GL_BGRA_EXT, #GL_UNSIGNED_BYTE, MemID)
Else
glTexImage2D_(#GL_TEXTURE_2D, 0, 3, img_w, img_h, 0, #GL_BGR_EXT, #GL_UNSIGNED_BYTE, MemID)
EndIf
-> Quadrat oben links : schwarz
-> Quadrat oben rechts: grün
-> Quadrat unten links: gelb
-> Quadrat unten rechts: gelb

...gewollt ist aber:

-> Quadrat oben links : rot
-> Quadrat oben rechts: grün
-> Quadrat unten links: hellblau
-> Quadrat unten rechts: weiß

Außerdem unterscheidet sich die Farbdarstellung auch komplett zwischen Windows und Linux.
(Bei keiner Änderung im Quelltext)

Bei Linux wird die Schrift auch korrekt angezeigt.
Bei Windows wird die Schrift umgedreht dargestellt.

Alles sehr komisch.

Auch solche Versuche:

(Code-Ausschnitt)

Code: Alles auswählen

*PngImg = EncodeImage(ImageID, #PB_ImagePlugin_PNG, 0, 24)
  
  CatchImage(0, *PngImg)
  
  If StartDrawing(ImageOutput(0))
    MemID = DrawingBuffer()
    StopDrawing()
  EndIf
liefern das selbe Ergebnis. (Mal schlechter, mal etwas besser (von der Kompression), aber an den Farben ändert sich nichts.)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Falsche Farben und Text bei OpengL

Beitrag von udg »

Geht es evtl um so etwas?

Bild


kann da mehr liefern

VG
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Falsche Farben und Text bei OpengL

Beitrag von ccode_new »

Ähhmmm ??? !

Das Thema bereitet mir echt zu großes “Kopfzerbrechen“.

Ich geh jetzt schlafen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Falsche Farben und Text bei OpengL

Beitrag von STARGÅTE »

Du musst auch beachten, wie das Image seine Daten Speichert:
DrawingBufferPixelFormat(), DrawingBufferPitch()

Ich glaube nicht, dass du bei jeder Imagebreite einfach so den DrawingBuffer() nutzen kannst, weil halt der Pitch größer sein könnte als der Inhalt, vorallem bei 24Bit images.

Außerdem wird der Buffer ungülig wenn du StopDrawing aufrufst:
DrawingBuffer() hat geschrieben:Sobald StopDrawing() aufgerufen wurde, wird der Puffer ungültig und kann nicht mehr verwendet werden.
Hier mal meine Variante:

Code: Alles auswählen

Procedure.i    ImageToTexture(Image.i)
	
	Protected iBytes.i, iFormat.i, *Buffer, *Pos, Y.i, LastY = ImageHeight(Image)-1
	Protected Width.i = ImageWidth(Image), Time.i
	
	If StartDrawing(ImageOutput(Image))
		If DrawingBufferPixelFormat() & #PB_PixelFormat_24Bits_RGB
			iBytes = 3 : iFormat = #GL_RGB
		EndIf
		If DrawingBufferPixelFormat() & #PB_PixelFormat_24Bits_BGR
			iBytes = 3 : iFormat = #GL_BGR
		EndIf
		If DrawingBufferPixelFormat() & #PB_PixelFormat_32Bits_RGB
			iBytes = 4 : iFormat = #GL_RGBA
		EndIf
		If DrawingBufferPixelFormat() & #PB_PixelFormat_32Bits_BGR
			iBytes = 4 : iFormat = #GL_BGRA
		EndIf
		*Buffer = AllocateMemory(ImageWidth(Image)*ImageHeight(Image)*iBytes) : *Pos = *Buffer
		If DrawingBufferPixelFormat() & #PB_PixelFormat_ReversedY
			For Y = LastY To 0 Step -1
				CopyMemory(DrawingBuffer()+DrawingBufferPitch()*Y, *Pos, Width*iBytes)
				*Pos + Width*iBytes
			Next
		Else
			For Y = 0 To LastY Step 1
				CopyMemory(DrawingBuffer()+DrawingBufferPitch()*Y, *Pos, Width*iBytes)
				*Pos + Width*iBytes
			Next
		EndIf
		glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGBA, ImageWidth(Image), ImageHeight(Image), 0, iFormat, #GL_UNSIGNED_BYTE, *Buffer)
		FreeMemory(*Buffer)
		StopDrawing()
	EndIf
	
EndProcedure
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Falsche Farben und Text bei OpengL

Beitrag von ccode_new »

Hallo STARGÅTE

Code: Alles auswählen

#GL_BGR = $80E0 ; Test!: Es gibt keine GL_BGR - Konstante (in kleinem gl.h  (gl2/gl3/etc.)
#GL_BGRA = $80E1 ; Test!: Es gibt keine GL_BGRA - Konstante (in kleinem gl.h  (gl2/gl3/etc.)

Procedure.i ImageToTexture(Image.i)
   
   Protected iBytes.i, iFormat.i, *Buffer, *Pos, Y.i, LastY = ImageHeight(Image)-1
   Protected Width.i = ImageWidth(Image), Time.i
   Protected TexID
   
   img_w = ImageWidth(Image)
   img_h = ImageHeight(Image)
   
   If StartDrawing(ImageOutput(Image))
     If DrawingBufferPixelFormat() & #PB_PixelFormat_24Bits_RGB
       iBytes = 3 : iFormat = #GL_RGB
     EndIf
     If DrawingBufferPixelFormat() & #PB_PixelFormat_24Bits_BGR
       iBytes = 3 : iFormat = #GL_BGR
     EndIf
     If DrawingBufferPixelFormat() & #PB_PixelFormat_32Bits_RGB
       iBytes = 4 : iFormat = #GL_RGBA
     EndIf
     If DrawingBufferPixelFormat() & #PB_PixelFormat_32Bits_BGR
       iBytes = 4 : iFormat = #GL_BGRA
     EndIf
     *Buffer = AllocateMemory(ImageWidth(Image)*ImageHeight(Image)*iBytes) : *Pos = *Buffer
     If DrawingBufferPixelFormat() & #PB_PixelFormat_ReversedY
       For Y = LastY To 0 Step -1
         CopyMemory(DrawingBuffer()+DrawingBufferPitch()*Y, *Pos, Width*iBytes)
         *Pos + Width*iBytes
       Next
     Else
       For Y = 0 To LastY Step 1
         CopyMemory(DrawingBuffer()+DrawingBufferPitch()*Y, *Pos, Width*iBytes)
         *Pos + Width*iBytes
       Next
     EndIf
     
     glGenTextures_(1, @TexID)
     glBindTexture_(#GL_TEXTURE_2D, TexID)
     
     glTexImage2D_(#GL_TEXTURE_2D, 0, #GL_RGBA, ImageWidth(Image), ImageHeight(Image), 0, iFormat, #GL_UNSIGNED_BYTE, *Buffer)
     
     glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_LINEAR)
     glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_LINEAR)
     
     FreeMemory(*Buffer)
     StopDrawing()
   EndIf

   ProcedureReturn TexID  
EndProcedure
Das ändert leider bei mir nichts an der fehlerhaften Farbausgabe.

Das Problem muss an anderer Stelle liegen.

(Unter Windows wird auch die komplette Textur umgedreht dargestellt ohne das ich etwas am Quellcode ändere.
Unter Linux stimmt zumindest die Ausrichtung der Textur.) ;deprecated *siehe unten

Aber die Farben sind in beiden Fällen falsch.

-> Quadrat oben links : rot (reiner Zufall)
-> Quadrat oben rechts: grün (reiner Zufall)
-> Quadrat unten links: grün
-> Quadrat unten rechts: gelb

...gewollt ist aber:

-> Quadrat oben links : rot
-> Quadrat oben rechts: grün
-> Quadrat unten links: hellblau
-> Quadrat unten rechts: weiß

->(Die Text ist schwarz und steht zumindest unter Linux an der korrekten Position.) ;deprecated *siehe unten

*Upps!: Dein Code bringt doch eine kleine Verbesserung.

Unter Windows und Linux wird jetzt wenigstens der Text gleich angezeigt. (Die Ausrichtung stimmt jetzt in beiden Fällen)
Aber die Farben sind trotzdem (gleich) falsch.

Was mir Aufgefallen ist:

Irgendwie schneidet OpenGL den kompletten Blau-Wert der Farbe ab.

Warum?

Besteht das Problem bei euch Anderen eigentlich auch? Oder habe ich hier einen Hardware/Software - Sonderfall ?
Bitte unter Windows/Linux /von mir aus auch Mac testen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Falsche Farben und Text bei OpengL

Beitrag von ccode_new »

Hallo!

Ich habe den Fehler gefunden:

Man muss die Farbe erst wieder zurücksetzen.
Dies hatte ich nicht getan.

Code: Alles auswählen

Procedure glDraw3DImage(x.f,y.f,z.f,TexID.i)
  glPushMatrix_()
  glMatrixMode_(#GL_MODELVIEW) 
  glColor4f_(1.0,1.0,1.0,1.0) ;WICHTIG!
  glBindTexture_(#GL_TEXTURE_2D, TexID)
  glBegin_(#GL_QUADS)
  glTexCoord3f_(0,0,z)
  glVertex3f_(x,y,z)
  glTexCoord3f_(1,0,z)
  glVertex3f_(x+img_w,y,z)
  glTexCoord3f_(1,1,z)
  glVertex3f_(x+img_w,y+img_h,z)
  glTexCoord3f_(0,1,z)
  glVertex3f_(x,y+img_h,z)
  glEnd_()
  ;glFlush_()
  glBindTexture_(#GL_TEXTURE_2D, 0)
  glPopMatrix_()
  glFinish_()
EndProcedure
Oh je!
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Falsche Farben und Text bei OpengL

Beitrag von ccode_new »

Toll ich kann jetzt wunderbar mehrere Texturen laden und verwalten.

Für Textausgabe möchte ich auch gerne Texturen verwenden.

Jetzt kommt die Frage!

Wie kann man transparente Texturen erstellen ?

Danke für jede evtl. Hilfe.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Falsche Farben und Text bei OpengL

Beitrag von STARGÅTE »

Verseteh die Frage nicht.
Deine Texture hat doch schon einen Alpha Kanal (#GL_RGBA).
Du musst halt die richten Sachen von den rendern einschalten: glEnable(), glBlendFunc(), #GL_BLEND, #GL_ALPHA_TEST usw.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten