346 |
346 |
347 glEnd() |
347 glEnd() |
348 end; |
348 end; |
349 |
349 |
350 procedure DrawTexture(X, Y: LongInt; Texture: PTexture); |
350 procedure DrawTexture(X, Y: LongInt; Texture: PTexture); |
351 var VertexBuffer, TextureBuffer: array [0..5] of TVertex2f; |
351 var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; |
352 begin |
352 begin |
353 glPushMatrix; |
353 glPushMatrix; |
354 glTranslatef(X, Y, 0); |
354 glTranslatef(X, Y, 0); |
355 |
355 |
356 glBindTexture(GL_TEXTURE_2D, Texture^.id); |
356 glBindTexture(GL_TEXTURE_2D, Texture^.id); |
361 VertexBuffer[1].Y:= 0; |
361 VertexBuffer[1].Y:= 0; |
362 VertexBuffer[2].X:= Texture^.w; |
362 VertexBuffer[2].X:= Texture^.w; |
363 VertexBuffer[2].Y:= Texture^.h; |
363 VertexBuffer[2].Y:= Texture^.h; |
364 VertexBuffer[3].X:= 0; |
364 VertexBuffer[3].X:= 0; |
365 VertexBuffer[3].Y:= Texture^.h; |
365 VertexBuffer[3].Y:= Texture^.h; |
366 VertexBuffer[4]:= VertexBuffer[0]; |
|
367 VertexBuffer[5]:= VertexBuffer[2]; |
|
368 |
366 |
369 TextureBuffer[0].X:= 0; |
367 TextureBuffer[0].X:= 0; |
370 TextureBuffer[0].Y:= 0; |
368 TextureBuffer[0].Y:= 0; |
371 TextureBuffer[1].X:= Texture^.rx; |
369 TextureBuffer[1].X:= Texture^.rx; |
372 TextureBuffer[1].Y:= 0; |
370 TextureBuffer[1].Y:= 0; |
373 TextureBuffer[2].X:= Texture^.rx; |
371 TextureBuffer[2].X:= Texture^.rx; |
374 TextureBuffer[2].Y:= Texture^.ry; |
372 TextureBuffer[2].Y:= Texture^.ry; |
375 TextureBuffer[3].X:= 0; |
373 TextureBuffer[3].X:= 0; |
376 TextureBuffer[3].Y:= Texture^.ry; |
374 TextureBuffer[3].Y:= Texture^.ry; |
377 TextureBuffer[4]:= TextureBuffer[0]; |
|
378 TextureBuffer[5]:= TextureBuffer[2]; |
|
379 |
375 |
380 glEnableClientState(GL_VERTEX_ARRAY); |
376 glEnableClientState(GL_VERTEX_ARRAY); |
381 glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
377 glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
382 |
378 |
383 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
379 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
384 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); |
380 glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); |
385 glDrawArrays(GL_TRIANGLES, 0, Length(VertexBuffer)); |
381 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
386 |
382 |
387 glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
383 glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
388 glDisableClientState(GL_VERTEX_ARRAY); |
384 glDisableClientState(GL_VERTEX_ARRAY); |
389 |
385 |
390 glPopMatrix |
386 glPopMatrix |