How about this:
Strict GLGraphics 640,480 Local pixmap:TPixmap=LoadPixmap( "flare1.png" ),flags=MASKEDIMAGE | FILTEREDIMAGE Local tex=CreateTex( pixmap.width,pixmap.height,flags ) glEnable GL_TEXTURE_2D glBindTexture GL_TEXTURE_2D,tex UploadTex pixmap,flags glEnable GL_BLEND glBlendFunc GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA While Not KeyHit( KEY_ESCAPE ) glClear GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT glBegin GL_QUADS glTexCoord2f 0,0 glVertex2f -1,-1 glTexCoord2f 1,0 glVertex2f 1,-1 glTexCoord2f 1,1 glVertex2f 1,1 glTexCoord2f 0,1 glVertex2f -1,1 glEnd Flip Wend End Function CreateTex( width,height,flags ) Local name glGenTextures 1,Varptr name glBindTexture GL_TEXTURE_2D,name 'set texture parameters glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE If flags & FILTEREDIMAGE glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR If flags & MIPMAPPEDIMAGE glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR Else glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR EndIf Else glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST If flags & MIPMAPPEDIMAGE glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_NEAREST Else glTexParameteri GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST EndIf EndIf Local mip_level Repeat glTexImage2D GL_TEXTURE_2D,mip_level,GL_RGBA8,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,Null If Not (flags & MIPMAPPEDIMAGE) Exit If width=1 And height=1 Exit If width>1 width:/2 If height>1 height:/2 mip_level:+1 Forever Return name End Function Function UploadTex( pixmap:TPixmap,flags ) Local mip_level Repeat glPixelStorei GL_UNPACK_ROW_LENGTH,pixmap.pitch/BytesPerPixel[pixmap.format] glTexSubImage2D GL_TEXTURE_2D,mip_level,0,0,pixmap.width,pixmap.height,GL_RGBA,GL_UNSIGNED_BYTE,pixmap.pixels If Not (flags & MIPMAPPEDIMAGE) Exit If pixmap.width>1 And pixmap.height>1 pixmap=ResizePixmap( pixmap,pixmap.width/2,pixmap.height/2 ) Else If pixmap.width>1 pixmap=ResizePixmap( pixmap,pixmap.width/2,pixmap.height ) Else If pixmap.height>1 pixmap=ResizePixmap( pixmap,pixmap.width,pixmap.height/2 ) Else Exit EndIf mip_level:+1 Forever glPixelStorei GL_UNPACK_ROW_LENGTH,0 End Function