function LoadGLTexture(const Surface: PSDL_Surface; const IsTexture: Boolean): PLGLRec; var NewSizeX, NewSizeY: DWord; ATex: GLUInt; Temp: PSDL_Surface; i, j: Longint; GLBPP: Longint; begin Result:=nil; GetMem(Result, SizeOf(TLGLRec)); if IsTexture then begin NewSizeX:=NextPowerOf(Surface^.w); NewSizeY:=NextPowerOf(Surface^.h); Result^.StretchX:=1.0 * Surface^.w / NewSizeX; Result^.StretchY:=1.0 * Surface^.h / NewSizeY; Temp:=Surface; if Temp^.format^.BytesPerPixel = 4 then GLBPP:=GL_BGRA_EXT else GLBPP:=GL_BGR_EXT; Writeln(NewSizeX, ' ', NewSizeY); glGenTextures(1, @Result^.Texture); glBindTexture(GL_TEXTURE_2D, Result^.Texture); glTexImage2D(GL_TEXTURE_2D, 0, Temp^.format^.BytesPerPixel, NewSizeX, NewSizeY, 0, GLBPP, GL_UNSIGNED_BYTE, Temp^.Pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); SDL_UnlockSurface(Temp); SDL_FreeSurface(Temp); Result^.Surface:=nil; end else Result^.Surface:=Surface; end;