Aktuelle Zeit: 15.11.2018 12:43

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [OpenGL] Wie verschiedene Texturen laden ?
BeitragVerfasst: 28.04.2018 20:10 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Ich verstehe nicht warum ich immer nur die zuletzt geladene Textur sehe ??? :(

Hier mein Code:
Code:

UsePNGImageDecoder()

Procedure.i Texture(*Buffer)
  Protected Image.i
  Protected ImageBuffer.i
  Protected ImageBits.i
  Protected TextureHandle.i
  Protected Width.i
  Protected Height.i
  Image = CatchImage(#PB_Any,*Buffer)
  If IsImage(Image)
    If StartDrawing(ImageOutput(Image))
      ImageBuffer = DrawingBuffer()
      StopDrawing()
      ImageBits = ImageDepth(Image,#PB_Image_InternalDepth)
      Width = ImageWidth(Image)
      Height = ImageHeight(Image)
      glGenTextures_(1,@TextureHandle)
      glBindTexture_(#GL_TEXTURE_RECTANGLE,TextureHandle)
      glTexParameterf_(#GL_TEXTURE_RECTANGLE,#GL_TEXTURE_MIN_FILTER,#GL_LINEAR)
      glTexParameterf_(#GL_TEXTURE_RECTANGLE,#GL_TEXTURE_MAG_FILTER,#GL_LINEAR)
      glTexParameterf_(#GL_TEXTURE_RECTANGLE,#GL_TEXTURE_WRAP_S,#GL_CLAMP_TO_EDGE)
      glTexParameterf_(#GL_TEXTURE_RECTANGLE,#GL_TEXTURE_WRAP_T,#GL_CLAMP_TO_EDGE)
      If ImageBits = 32
        glTexImage2D_(#GL_TEXTURE_RECTANGLE,0,4,Width,Height,0,#GL_BGRA_EXT,#GL_UNSIGNED_BYTE,ImageBuffer)
      Else
        glTexImage2D_(#GL_TEXTURE_RECTANGLE,0,3,Width,Height,0,#GL_BGR_EXT,#GL_UNSIGNED_BYTE,ImageBuffer)
      EndIf
      ProcedureReturn TextureHandle
    EndIf
    FreeImage(Image)
  EndIf
EndProcedure

Procedure.i RenderTexture(X.f,Y.f,Width.f,Height.f,Texture.i)
  glBindTexture_(#GL_TEXTURE_2D,Texture)
  glBegin_(#GL_QUADS)
  glColor4f_(1,1,1,1)
  glTexCoord2f_(0,0)
  glVertex2f_(X,Y)
  glTexCoord2f_(Width,0)
  glVertex2f_(X + Width,Y)
  glTexCoord2f_(Width,Height)
  glVertex2f_(X + Width,Y + Height)
  glTexCoord2f_(0,Height)
  glVertex2f_(X,Y + Height)
  glEnd_()
EndProcedure

Procedure.i Test()
  Protected Texture1.i
  Protected Texture2.i
  Protected OpenGL.i
  If OpenWindow(0,0,0,400,400,"TestWindow",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    If OpenGLGadget(1,0,0,400,400,#PB_OpenGL_NoDepthBuffer)
      glShadeModel_(#GL_SMOOTH)
      glEnable_(#GL_BLEND)
      glEnable_(#GL_TEXTURE_2D)
      glEnable_(#GL_TEXTURE_RECTANGLE)
      glBlendFunc_(#GL_SRC_ALPHA,#GL_ONE_MINUS_SRC_ALPHA)
      glMatrixMode_(#GL_PROJECTION)
      glLoadIdentity_()
      glOrtho_(0,400,400,0,-1000,1000)
      glMatrixMode_(#GL_MODELVIEW)
      glLoadIdentity_()
      glClearColor_(0,0,0,0)         
      Texture1 = Texture(?T1)
      Texture2 = Texture(?T2)
      If Texture1 And Texture2
        Repeat
          glClear_ (#GL_COLOR_BUFFER_BIT)
          RenderTexture(100,100,32,32,Texture1)
          RenderTexture(100,200,32,32,Texture2)
          SetGadgetAttribute(1,#PB_OpenGL_FlipBuffers,#True)
        Until WindowEvent() = #PB_Event_CloseWindow
      EndIf
    EndIf
  EndIf
EndProcedure

Test()

DataSection
  T1:
  !dw 05089h, 0474Eh, 00A0Dh, 00A1Ah, 00000h, 00D00h, 04849h, 05244h, 00000h, 02000h, 00000h, 02000h, 00608h, 00000h, 07300h, 07A7Ah, 000F4h, 00000h, 07009h, 05948h, 00073h, 00E00h, 000C4h, 00E00h, 001C4h, 02B95h, 01B0Eh, 00000h, 08C00h, 04449h, 05441h, 0C358h, 097EDh, 009C1h, 03080h, 0450Ch, 05B7Fh, 01187h, 04C1Ch, 0489Dh
  !dw 04C1Ch, 032E8h, 03C6Dh, 06C79h, 0E31Ah, 0D041h, 06B9Fh, 0784Ah, 0E484h, 00685h, 08111h, 0D63Bh, 00190h, 09B00h, 0DE8Ch, 01112h, 0072Fh, 00801h, 08040h, 0F5D0h, 01CC0h, 0050Eh, 0013Fh, 02A00h, 0F34Ah, 02ECDh, 05693h, 0307Eh, 029F6h, 0F2B9h, 0D81Ah, 0802Dh, 0ED96h, 01334h, 0395Eh, 0210Eh, 0BA01h, 0B86Bh, 0FF20h, 003BCh
  !dw 01116h, 02445h, 01AD7h, 09456h, 0889Eh, 08438h, 0B004h, 002DFh, 0EDCDh, 0EF46h, 001FBh, 0575Ah, 072CDh, 01F8Eh, 021AFh, 005FFh, 02004h, 0D7C0h, 04E01h, 04052h, 0FB32h, 0877Ch, 0646Eh, 00000h, 00000h, 04549h, 0444Eh, 042AEh, 08260h
  T2:
  !dw 05089h, 0474Eh, 00A0Dh, 00A1Ah, 00000h, 00D00h, 04849h, 05244h, 00000h, 02000h, 00000h, 02000h, 00608h, 00000h, 07300h, 07A7Ah, 000F4h, 00000h, 07009h, 05948h, 00073h, 00E00h, 000C4h, 00E00h, 001C4h, 02B95h, 01B0Eh, 00000h, 07100h, 04449h, 05441h, 0C358h, 0FC63h, 0FFFFh, 0033Fh, 080B9h, 0E171h, 03499h, 00606h, 08606h
  !dw 0F1FFh, 0B326h, 035C8h, 08983h, 08061h, 0A8C1h, 04603h, 0301Dh, 000EAh, 04246h, 000E5h, 0AF2Ch, 00B93h, 09508h, 00311h, 0021Eh, 0942Ch, 004F8h, 0495Fh, 06C48h, 08DC8h, 0C226h, 00751h, 03230h, 0382Ch, 0369Dh, 043B2h, 0D880h, 08882h, 06CDCh, 0E838h, 0A20Bh, 00751h, 09D0Ch, 000BAh, 0D95Fh, 0494Eh, 0398Dh, 0B3F8h, 068E1h
  !dw 060BFh, 001D4h, 00EA3h, 0F618h, 0000Eh, 03C00h, 0312Fh, 0D2ADh, 0896Dh, 000CAh, 00000h, 04900h, 04E45h, 0AE44h, 06042h, 00082h
  EOD:
EndDataSection


Was mach ich falsch ? :freak: :coderselixir:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [OpenGL] Wie verschiedene Texturen laden ?
BeitragVerfasst: 28.04.2018 22:34 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Mijikai,

ich bin jetzt wieder am Testen ;)

Du scheinst das selbe Problem wie Ich zu haben.

Als ersten Fehler ist zu nennen: Dein "TextureHandle" wird in beiden Fällen an der gleiche Speicherstelle geschrieben.
(Ob das so richtig ist?)

Wenn dies behoben wird ändert das aber nichts an der Ausgabe.

Deine zweite oder erste Textur wird aber angezeigt.

Kann es sein das danach auch nur die Farben nicht korrekt dargestellt werden ?

Ich habe auch immer noch mein Textur-Problem.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [OpenGL] Wie verschiedene Texturen laden ?
BeitragVerfasst: 28.04.2018 23:13 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Habs gelöst :oops:
Hab was vergessenr:
Code:
glBindTexture_(#GL_TEXTURE_2D,Texture)

es sollte so aussehen:
Code:
glBindTexture_(#GL_TEXTURE_RECTANGLE,Texture)

jetzt gehts :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [OpenGL] Wie verschiedene Texturen laden ?
BeitragVerfasst: 28.04.2018 23:26 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Ohhh!

Stimmt!

Ist mir auch gerade aufgefallen.

Super!

Kannst du mir bei dem Farbenproblem helfen ?

Die unteren 2 Farbquadrate werden in den falschen Farben dargestellt.
(siehe den Thread nebenan ;) )


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye