--- deliantra/Deliantra-Client/bin/pclient 2006/04/06 21:15:11 1.6 +++ deliantra/Deliantra-Client/bin/pclient 2006/04/07 13:53:38 1.9 @@ -38,11 +38,13 @@ -resizeable => 0; glEnable GL_TEXTURE_2D; - glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL; + glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; glShadeModel GL_FLAT; glDisable GL_DEPTH_TEST; - glMatrixMode GL_PROJECTION; + glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; + glEnable GL_BLEND; + glMatrixMode GL_PROJECTION; glLoadIdentity; glOrtho 0, $WIDTH / 32, $HEIGHT / 32, 0, -1 , 1; @@ -50,7 +52,7 @@ } sub refresh { - glClearColor 0.5, 0.5, 0.7, 0; + glClearColor 0, 0, 0, 0; glClear GL_COLOR_BUFFER_BIT; my $map = $conn->{map}; @@ -61,17 +63,20 @@ my $cell = $map->[$x][$y] or next; + my $darkness = $cell->[3] * (1 / 255); + my $darkness = 0.8 + 0.2*rand; + glColor $darkness, $darkness, $darkness; + for my $num (grep $_, $cell->[0], $cell->[1], $cell->[2]) { my $tex = $conn->{face}[$num]{texture} || 0; glBindTexture GL_TEXTURE_2D, $tex; - glColor 1,0.2,0.7; glBegin GL_QUADS; glTexCoord 0, 0; glVertex $x, $y; - glTexCoord 0, 1; glVertex $x, $y + 0.9; - glTexCoord 1, 1; glVertex $x + 0.9, $y + 0.9; - glTexCoord 1, 0; glVertex $x + 0.9, $y; + glTexCoord 0, 1; glVertex $x, $y + 1; + glTexCoord 1, 1; glVertex $x + 1, $y + 1; + glTexCoord 1, 0; glVertex $x + 1, $y; glEnd; } } @@ -151,17 +156,17 @@ my ($self, $num, $face) = @_; warn "up face $self,$num,$face\n";#d# - #TODO - open my $fh, ">:raw", "/tmp/x~"; - syswrite $fh, $face->{image}; - close $fh; + use Gtk2; - my $surface = new SDL::Surface -name => "/tmp/x~"; + my $pb = new Gtk2::Gdk::PixbufLoader; + $pb->write ($face->{image}); + $pb->close; - unlink "/tmp/x~"; + $pb = $pb->get_pixbuf; + $pb = $pb->add_alpha (0, 0, 0, 0); - my ($tex) = @{glGenTextures 1}; glGetError(); + my ($tex) = @{glGenTextures 1}; $face->{texture} = $tex; @@ -169,19 +174,17 @@ my $glerr=glGetError(); die "a: ".gluErrorString($glerr)."\n" if $glerr; glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR; - glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR; + glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR;#_MIPMAP_LINEAR; glTexParameter GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP; glTexParameter GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP; - $surface->rgba; - glTexImage2D GL_TEXTURE_2D, 0, - 4, # components - $surface->width, $surface->height, + GL_RGBA8, + $pb->get_width, $pb->get_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - $surface->pixels; + $pb->get_pixels; my $glerr=glGetError(); die "Problem setting up 2d Texture (dimensions not a power of 2?)):".gluErrorString($glerr)."\n" if $glerr; }