hedgewars/uStore.pas
changeset 3641 98319a621dc8
parent 3634 93d260c96635
child 3663 8c28abf427f5
equal deleted inserted replaced
3640:54676a34b9ad 3641:98319a621dc8
   520 TextureBuffer[2].X:= _r;
   520 TextureBuffer[2].X:= _r;
   521 TextureBuffer[2].Y:= _b;
   521 TextureBuffer[2].Y:= _b;
   522 TextureBuffer[3].X:= _l;
   522 TextureBuffer[3].X:= _l;
   523 TextureBuffer[3].Y:= _b;
   523 TextureBuffer[3].Y:= _b;
   524 
   524 
   525 glEnableClientState(GL_VERTEX_ARRAY);
       
   526 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       
   527 
   525 
   528 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   526 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   529 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]);
   527 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]);
   530 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   528 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   531 
       
   532 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
       
   533 glDisableClientState(GL_VERTEX_ARRAY)
       
   534 end;
   529 end;
   535 
   530 
   536 procedure DrawTexture(X, Y: LongInt; Texture: PTexture; Scale: GLfloat);
   531 procedure DrawTexture(X, Y: LongInt; Texture: PTexture; Scale: GLfloat);
   537 begin
   532 begin
   538 glPushMatrix;
   533 glPushMatrix;
   539 glTranslatef(X, Y, 0);
   534 glTranslatef(X, Y, 0);
   540 glScalef(Scale, Scale, 1);
   535 glScalef(Scale, Scale, 1);
   541 
   536 
   542 glBindTexture(GL_TEXTURE_2D, Texture^.id);
   537 glBindTexture(GL_TEXTURE_2D, Texture^.id);
   543 
   538 
   544 glEnableClientState(GL_VERTEX_ARRAY);
       
   545 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       
   546 
       
   547 glVertexPointer(2, GL_FLOAT, 0, @Texture^.vb);
   539 glVertexPointer(2, GL_FLOAT, 0, @Texture^.vb);
   548 glTexCoordPointer(2, GL_FLOAT, 0, @Texture^.tb);
   540 glTexCoordPointer(2, GL_FLOAT, 0, @Texture^.tb);
   549 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(Texture^.vb));
   541 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(Texture^.vb));
   550 
       
   551 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
       
   552 glDisableClientState(GL_VERTEX_ARRAY);
       
   553 
   542 
   554 glPopMatrix
   543 glPopMatrix
   555 end;
   544 end;
   556 
   545 
   557 procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt);
   546 procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt);
   609 TextureBuffer[2].X:= fr;
   598 TextureBuffer[2].X:= fr;
   610 TextureBuffer[2].Y:= fb;
   599 TextureBuffer[2].Y:= fb;
   611 TextureBuffer[3].X:= fl;
   600 TextureBuffer[3].X:= fl;
   612 TextureBuffer[3].Y:= fb;
   601 TextureBuffer[3].Y:= fb;
   613 
   602 
   614 glEnableClientState(GL_VERTEX_ARRAY);
       
   615 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       
   616 
       
   617 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   603 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   618 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]);
   604 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]);
   619 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   605 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   620 
       
   621 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
       
   622 glDisableClientState(GL_VERTEX_ARRAY);
       
   623 
       
   624 
   606 
   625 glPopMatrix
   607 glPopMatrix
   626 end;
   608 end;
   627 
   609 
   628 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real);
   610 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real);
   672 VertexBuffer[2].X:= hw;
   654 VertexBuffer[2].X:= hw;
   673 VertexBuffer[2].Y:= hh;
   655 VertexBuffer[2].Y:= hh;
   674 VertexBuffer[3].X:= -hw;
   656 VertexBuffer[3].X:= -hw;
   675 VertexBuffer[3].Y:= hh;
   657 VertexBuffer[3].Y:= hh;
   676 
   658 
   677 glEnableClientState(GL_VERTEX_ARRAY);
       
   678 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       
   679 
       
   680 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   659 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   681 glTexCoordPointer(2, GL_FLOAT, 0, @Tex^.tb);
   660 glTexCoordPointer(2, GL_FLOAT, 0, @Tex^.tb);
   682 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   661 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   683 
       
   684 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
       
   685 glDisableClientState(GL_VERTEX_ARRAY);
       
   686 
   662 
   687 glPopMatrix
   663 glPopMatrix
   688 end;
   664 end;
   689 
   665 
   690 procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt);
   666 procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt);
   779 TextureBuffer[2].X:= r;
   755 TextureBuffer[2].X:= r;
   780 TextureBuffer[2].Y:= b;
   756 TextureBuffer[2].Y:= b;
   781 TextureBuffer[3].X:= l;
   757 TextureBuffer[3].X:= l;
   782 TextureBuffer[3].Y:= b;
   758 TextureBuffer[3].Y:= b;
   783 
   759 
   784 glEnableClientState(GL_VERTEX_ARRAY);
       
   785 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       
   786 
       
   787 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   760 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   788 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]);
   761 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]);
   789 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   762 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   790 
       
   791 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
       
   792 glDisableClientState(GL_VERTEX_ARRAY);
       
   793 
   763 
   794 glPopMatrix
   764 glPopMatrix
   795 end;
   765 end;
   796 
   766 
   797 procedure DrawFillRect(r: TSDL_Rect);
   767 procedure DrawFillRect(r: TSDL_Rect);
   808 VertexBuffer[2].X:= r.x + r.w;
   778 VertexBuffer[2].X:= r.x + r.w;
   809 VertexBuffer[2].Y:= r.y + r.h;
   779 VertexBuffer[2].Y:= r.y + r.h;
   810 VertexBuffer[3].X:= r.x;
   780 VertexBuffer[3].X:= r.x;
   811 VertexBuffer[3].Y:= r.y + r.h;
   781 VertexBuffer[3].Y:= r.y + r.h;
   812 
   782 
   813 glEnableClientState(GL_VERTEX_ARRAY);
       
   814 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   783 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
   815 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   784 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
   816 glDisableClientState(GL_VERTEX_ARRAY);
       
   817 
   785 
   818 Tint($FF, $FF, $FF, $FF);
   786 Tint($FF, $FF, $FF, $FF);
   819 glEnable(GL_TEXTURE_2D)
   787 glEnable(GL_TEXTURE_2D)
   820 end;
   788 end;
   821 
   789 
  1239     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  1207     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  1240     // disable/lower perspective correction (won't need it anyway)
  1208     // disable/lower perspective correction (won't need it anyway)
  1241     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
  1209     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
  1242     // disable dithering
  1210     // disable dithering
  1243     glDisable(GL_DITHER);
  1211     glDisable(GL_DITHER);
  1244     // enable 2d textures by default
  1212     // enable common states by default as they save a lot
  1245     glEnable(GL_TEXTURE_2D);
  1213     glEnable(GL_TEXTURE_2D);
       
  1214     glEnableClientState(GL_VERTEX_ARRAY);                                                                                        
       
  1215     glEnableClientState(GL_TEXTURE_COORD_ARRAY);  
  1246 end;
  1216 end;
  1247 
  1217 
  1248 procedure SetScale(f: GLfloat);
  1218 procedure SetScale(f: GLfloat);
  1249 begin
  1219 begin
  1250     // leave immediately if scale factor did not change
  1220     // leave immediately if scale factor did not change