Wie kann ich bitte ein BMP-Bild reinsetzen als Ersatz für das gelbe Quadrat in dieser Proc : Procedure DrawQuad()
Es wird als Ortho abgebildet.
Code: Alles auswählen
Global x.l,y.l,w.l,gadget.l
Declare DrawQuad()
Declare SetupGL()
Define *BMPHeader
Define *BMPImage
Define Direction.I
Define ImageHeight.I
Define ImageSize.I
Define ImageWidth.I
Define ImagePath.S
Define TextureID.I
#ImagePath = #PB_Compiler_Home + "examples/sources/Data/"
If ReadFile(0, #ImagePath + "Geebee2.bmp") = 0
MessageRequester("Error", "Loading of texture image failed!")
End
EndIf
*BMPHeader = AllocateMemory(54)
ReadData(0, *BMPHeader, MemorySize(*BMPHeader))
ImageWidth = PeekL(*BMPHeader + 18)
ImageHeight = PeekL(*BMPHeader + 22)
ImageSize = PeekL(*BMPHeader + 34)
FreeMemory(*BMPHeader)
*BMPImage = AllocateMemory(ImageSize)
ReadData(0, *BMPImage, ImageSize)
CloseFile(0)
OpenWindow(0, 0, 0, 800,600, "OpenGL Ortho", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
gadget=0
OpenGLGadget(0, 10, 10, 300,300)
SetGadgetAttribute(0, #PB_OpenGL_SetContext, #True)
SetupGL()
AddWindowTimer(0, 1, 16) ; about 60 fps
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Timer
If EventTimer() = 1
If x < 150
x=x+1
y=y+1
EndIf
w=w+1
DrawQuad()
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
Procedure DrawQuad()
glClear_(#GL_COLOR_BUFFER_BIT)
glColor3ub_(255,255,0)
glPushMatrix_()
glTranslatef_(x,y,0.0)
glRotatef_(w,0.0,0.0,1.0)
glBegin_(#GL_QUADS)
glVertex2f_(-50.0, 50.0)
glVertex2f_( 50.0, 50.0)
glVertex2f_( 50.0,-50.0)
glVertex2f_(-50.0,-50.0)
glEnd_()
glPopMatrix_()
SetGadgetAttribute(Gadget, #PB_OpenGL_FlipBuffers, #True)
EndProcedure
Procedure SetupGL()
glDisable_(#GL_DEPTH_TEST)
glDisable_(#GL_LIGHTING)
glMatrixMode_(#GL_PROJECTION)
glPushMatrix_()
glLoadIdentity_()
glOrtho_(0,300,300,0,-1,1)
glMatrixMode_(#GL_MODELVIEW)
glPushMatrix_()
glLoadIdentity_()
EndProcedure
Gruss