340 |
340 |
341 glEnd() |
341 glEnd() |
342 end; |
342 end; |
343 |
343 |
344 procedure DrawTexture(X, Y: LongInt; Texture: PTexture); |
344 procedure DrawTexture(X, Y: LongInt; Texture: PTexture); |
345 begin |
345 var VertexBuffer, TextureBuffer: array [0..5] of TVertex2f; |
|
346 begin |
|
347 glPushMatrix; |
|
348 glTranslatef(X, Y, 0); |
|
349 |
346 glBindTexture(GL_TEXTURE_2D, Texture^.id); |
350 glBindTexture(GL_TEXTURE_2D, Texture^.id); |
347 |
351 |
348 glBegin(GL_QUADS); |
352 VertexBuffer[0].X:= 0; |
349 |
353 VertexBuffer[0].Y:= 0; |
350 glTexCoord2f(0, 0); |
354 VertexBuffer[1].X:= Texture^.w; |
351 glVertex2i(X, Y); |
355 VertexBuffer[1].Y:= 0; |
352 |
356 VertexBuffer[2].X:= Texture^.w; |
353 glTexCoord2f(Texture^.rx, 0); |
357 VertexBuffer[2].Y:= Texture^.h; |
354 glVertex2i(Texture^.w + X, Y); |
358 VertexBuffer[3].X:= 0; |
355 |
359 VertexBuffer[3].Y:= Texture^.h; |
356 glTexCoord2f(Texture^.rx, Texture^.ry); |
360 VertexBuffer[4]:= VertexBuffer[0]; |
357 glVertex2i(Texture^.w + X, Texture^.h + Y); |
361 VertexBuffer[5]:= VertexBuffer[2]; |
358 |
362 |
359 glTexCoord2f(0, Texture^.ry); |
363 TextureBuffer[0].X:= 0; |
360 glVertex2i(X, Texture^.h + Y); |
364 TextureBuffer[0].Y:= 0; |
361 |
365 TextureBuffer[1].X:= Texture^.rx; |
362 glEnd() |
366 TextureBuffer[1].Y:= 0; |
|
367 TextureBuffer[2].X:= Texture^.rx; |
|
368 TextureBuffer[2].Y:= Texture^.ry; |
|
369 TextureBuffer[3].X:= 0; |
|
370 TextureBuffer[3].Y:= Texture^.ry; |
|
371 TextureBuffer[4]:= TextureBuffer[0]; |
|
372 TextureBuffer[5]:= TextureBuffer[2]; |
|
373 |
|
374 glEnableClientState(GL_VERTEX_ARRAY); |
|
375 glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
|
376 |
|
377 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
|
378 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); |
|
379 glDrawArrays(GL_TRIANGLES, 0, Length(VertexBuffer)); |
|
380 |
|
381 glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
|
382 glDisableClientState(GL_VERTEX_ARRAY); |
|
383 |
|
384 glPopMatrix |
363 end; |
385 end; |
364 |
386 |
365 procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, Frames: LongInt); |
387 procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, Frames: LongInt); |
366 var ft, fb: GLfloat; |
388 var ft, fb: GLfloat; |
367 hw: LongInt; |
389 hw: LongInt; |