--- deliantra/Deliantra-Client/DC/Texture.pm 2007/08/28 01:23:47 1.28 +++ deliantra/Deliantra-Client/DC/Texture.pm 2007/12/25 18:58:32 1.29 @@ -112,7 +112,7 @@ return if $self->{loading}; unless ($GL_VERSION) { - $self->{was_loaded} = 1; + $self->{want_upload} = -1; return; } @@ -234,6 +234,10 @@ } } + if ((my $name = delete $self->{want_upload}) > 0) { + $self->{name} = $name; + } + glBindTexture GL_TEXTURE_2D, $self->{name} ||= glGenTexture; if ($self->{wrap}) { @@ -323,15 +327,14 @@ $CFPlus::OpenGL::INIT_HOOK{"CFPlus::Texture"} = sub { for (values %TEXTURES) { - next unless delete $_->{was_loaded}; - $_->upload; + $_->upload if $_->{want_upload}; } }; $CFPlus::OpenGL::SHUTDOWN_HOOK{"CFPlus::Texture"} = sub { for (values %TEXTURES) { next unless $_->{name}; - $_->{was_loaded} = 1; + $_->{want_upload} = $_->{name}; $_->unload; } };