sub 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);