606 glPopMatrix |
606 glPopMatrix |
607 end; |
607 end; |
608 |
608 |
609 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real); |
609 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real); |
610 begin |
610 begin |
611 DrawRotatedTex(SpritesData[Sprite].Texture, |
611 DrawRotatedTex(SpritesData[Sprite].Texture, |
612 SpritesData[Sprite].Width, |
612 SpritesData[Sprite].Width, |
613 SpritesData[Sprite].Height, |
613 SpritesData[Sprite].Height, |
614 X, Y, Dir, Angle) |
614 X, Y, Dir, Angle) |
615 end; |
615 end; |
616 |
616 |
709 end; |
709 end; |
710 |
710 |
711 procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt); |
711 procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt); |
712 var r: TSDL_Rect; |
712 var r: TSDL_Rect; |
713 begin |
713 begin |
714 r.x:= FrameX * SpritesData[Sprite].Width; |
714 r.x:= FrameX * SpritesData[Sprite].Width; |
715 r.w:= SpritesData[Sprite].Width; |
715 r.w:= SpritesData[Sprite].Width; |
716 r.y:= FrameY * SpritesData[Sprite].Height; |
716 r.y:= FrameY * SpritesData[Sprite].Height; |
717 r.h:= SpritesData[Sprite].Height; |
717 r.h:= SpritesData[Sprite].Height; |
718 DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture) |
718 DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture) |
719 end; |
719 end; |
720 |
720 |
721 procedure DrawCentered(X, Top: LongInt; Source: PTexture); |
721 procedure DrawCentered(X, Top: LongInt; Source: PTexture); |
722 begin |
722 begin |
723 DrawTexture(X - Source^.w shr 1, Top, Source) |
723 DrawTexture(X - Source^.w shr 1, Top, Source) |
801 end; |
801 end; |
802 |
802 |
803 procedure StoreRelease; |
803 procedure StoreRelease; |
804 var ii: TSprite; |
804 var ii: TSprite; |
805 begin |
805 begin |
806 for ii:= Low(TSprite) to High(TSprite) do |
806 for ii:= Low(TSprite) to High(TSprite) do |
807 begin |
807 begin |
808 FreeTexture(SpritesData[ii].Texture); |
808 FreeTexture(SpritesData[ii].Texture); |
809 if SpritesData[ii].Surface <> nil then SDL_FreeSurface(SpritesData[ii].Surface) |
809 if SpritesData[ii].Surface <> nil then |
810 end; |
810 SDL_FreeSurface(SpritesData[ii].Surface) |
811 SDL_FreeSurface(MissionIcons); |
811 end; |
812 FreeTexture(ropeIconTex); |
812 SDL_FreeSurface(MissionIcons); |
813 FreeTexture(HHTexture) |
813 FreeTexture(ropeIconTex); |
|
814 FreeTexture(HHTexture); |
814 end; |
815 end; |
815 |
816 |
816 |
817 |
817 function CheckCJKFont(s: ansistring; font: THWFont): THWFont; |
818 function CheckCJKFont(s: ansistring; font: THWFont): THWFont; |
818 var l, i : LongInt; |
819 var l, i : LongInt; |
1132 {$ENDIF} |
1133 {$ENDIF} |
1133 end; |
1134 end; |
1134 |
1135 |
1135 procedure SetupOpenGL; |
1136 procedure SetupOpenGL; |
1136 var vendor: shortstring; |
1137 var vendor: shortstring; |
1137 begin |
1138 {$IFDEF DARWIN} |
|
1139 one: LongInt; |
|
1140 {$ENDIF} |
|
1141 begin |
|
1142 // initialized here because when initModule is called cScreenWidth/Height are not yet set |
|
1143 if (uStore.wScreen = 0) and (uStore.hScreen = 0) then |
|
1144 begin |
|
1145 uStore.wScreen:= cScreenWidth; |
|
1146 uStore.hScreen:= cScreenHeight; |
|
1147 end; |
|
1148 |
1138 {$IFDEF IPHONEOS} |
1149 {$IFDEF IPHONEOS} |
1139 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); // no double buffering |
1150 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); // no double buffering |
1140 SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1); |
1151 SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1); |
1141 {$ELSE} |
1152 {$ELSE} |
1142 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); |
1153 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); |
|
1154 {$IFNDEF SDL13} |
|
1155 // this attribute is default in 1.3 and must be enabled in MacOSX |
|
1156 if cVSyncInUse then |
|
1157 SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1); |
|
1158 {$IFDEF DARWIN} |
|
1159 // fixes vsync in Snow Leopard |
|
1160 one := 1; |
|
1161 CGLSetParameter(CGLGetCurrentContext(), 222, @one); |
|
1162 {$ENDIF} |
|
1163 {$ENDIF} |
1143 {$ENDIF} |
1164 {$ENDIF} |
1144 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); // no depth buffer |
1165 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); // no depth buffer |
1145 SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); |
1166 SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); |
1146 SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); |
1167 SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); |
1147 SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); |
1168 SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); |
1148 SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); // no alpha channel required |
1169 SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); // no alpha channel required |
1149 SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16); // buffer has to be 16 bit only |
1170 SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16); // buffer has to be 16 bit only |
1150 SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); // try to prefer hardware rendering |
1171 SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); // try to prefer hardware rendering |
1151 |
|
1152 {$IFNDEF SDL13} |
|
1153 // this attribute is default in 1.3 and must be enabled in MacOSX |
|
1154 {$IFNDEF DARWIN} |
|
1155 if cVSyncInUse then |
|
1156 {$ENDIF} |
|
1157 SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1); |
|
1158 {$ENDIF} |
|
1159 |
1172 |
1160 glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize); |
1173 glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize); |
1161 |
1174 |
1162 vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR)))); |
1175 vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR)))); |
1163 {$IFDEF DEBUGFILE} |
1176 {$IFDEF DEBUGFILE} |