--- deliantra/Deliantra-Client/DC/Texture.pm 2006/05/29 02:01:56 1.2 +++ deliantra/Deliantra-Client/DC/Texture.pm 2006/06/14 16:20:23 1.5 @@ -124,21 +124,10 @@ $data = "\x00" x 64; } - $self->{minified} = [CFClient::average $tw, $th, $data] + $self->{minified} ||= [CFClient::average $tw, $th, $data] if $self->{minify}; - unless ($GL_NPOT) { - # TODO: does not work for zero-sized textures - $tw = topot $tw; - $th = topot $th; - - if (($tw != $self->{w} || $th != $self->{h}) && defined $data) { - my $bpp = (length $data) / ($self->{w} * $self->{h}); - $data = pack "(a" . ($tw * $bpp) . ")*", - unpack "(a" . ($self->{w} * $bpp) . ")*", $data; - $data .= ("\x00" x ($tw * $bpp)) x ($th - $self->{h}); - } - } + pad2pot $data, $tw, $th unless $GL_NPOT; $self->{s} = $self->{w} / $tw; $self->{t} = $self->{h} / $th; @@ -159,7 +148,6 @@ glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST; glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST; } elsif ($self->{mipmap} && $GL_VERSION >= 1.4) { - # alternatively check for 0x8191 glTexParameter GL_TEXTURE_2D, GL_GENERATE_MIPMAP, 1; glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR; glTexParameter GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR; @@ -190,8 +178,6 @@ gl_check "copying to texture %dx%d if=%x", $tw, $th, $self->{internalformat}; } - - glBindTexture GL_TEXTURE_2D, 0; # just to be on the safe side } sub DESTROY {