rendered paste bodysub image_draw {
my ( $image,$x,$y,$xsize,$ysize ) = @_;
glBindTexture(GL_TEXTURE_2D, $image);
$xmax = $x + $xsize;
$ymax = $y + $ysize;
glBegin(GL_QUADS);
glTexCoord(0.0, 0.0);glVertex($x, $y, 0);
glTexCoord(1, 0.0); glVertex( $xmax, $y, 0);
glTexCoord(1, 1); glVertex( $xmax, $ymax, 0);
glTexCoord(0.0, 1);glVertex($x, $ymax, 0);
glEnd();
}
sub InitGL {
my ($Width, $Height, $kernel, $heap)=@_;
glViewport(0, 0, $Width, $Height);
#LoadGLTextures();
image_load("./Media/imgs/",$kernel,$heap);
glEnable(GL_TEXTURE_2D());
glClearColor(0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0);
glDepthFunc(GL_LESS());
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH());
glMatrixMode(GL_PROJECTION());
glLoadIdentity();
#glOrtho(0,640,0,480);
gluOrtho2D(0, $Width, $Height,0);
gluPerspective(45.0, $Width/$Height, 0.1, 100.0);
glMatrixMode(GL_MODELVIEW());
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glColor(1.0, 1.0, 1.0, 1.0);
glTranslate(0.0,0.0,-2.0);
}
# that part load the textures.
-------
my $textures = glGenTextures(1); #name texture
die "Could not genereate textures" unless $$textures[0];
debug_print("loaded at slot $index",$kernel,$heap);
glBindTexture(GL_TEXTURE_2D, $$textures[0]); # 2d texture
glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); # scale linearly when image bigger than texture
glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); # scale linearly when image smalled than texture
glTexImage2D(GL_TEXTURE_2D(),
0,
GL_RGBA(),
$width,$height,
0,
GL_RGBA(),
GL_UNSIGNED_BYTE(),
$pixels);
#-------------------------------------------------------------
image_draw($heap->{"images"}->{"2_bgtile"},0,0,640,480);