Skip to content

Commit c8bed65

Browse files
committed
recompile shader if destroyed eg by window close/reopen
1 parent af36b53 commit c8bed65

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

  • lib/PDL/Graphics/TriD

lib/PDL/Graphics/TriD/GL.pm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ sub PDL::Graphics::TriD::Lines::primitive {OpenGL::Modern::GL_LINES}
437437
PDL::Graphics::TriD::Spheres;
438438
use PDL::Graphics::OpenGLQ;
439439
use OpenGL::Modern qw(
440-
glVertexAttribDivisor glDrawElementsInstancedARB_c
440+
glIsProgram glVertexAttribDivisor glDrawElementsInstancedARB_c
441441
GL_TRIANGLE_STRIP GL_UNSIGNED_INT
442442
);
443443
my $vertex_shader = sprintf <<'EOF', @SHADERBITS{qw(version vs_in_decl vs_in_light_decl fs_in_light_decl vs_in vs_out vs_out_light)};
@@ -465,7 +465,9 @@ sub togl_setup {
465465
@SPHERE{@KEYS} = gl_sphere(0.025, 15, 15);
466466
}
467467
@{ $this->{Impl} }{@KEYS} = @SPHERE{@KEYS};
468-
$SHADER_PROGRAM //= $this->compile_program($vertex_shader, $fragment_shader);
468+
if (!defined $SHADER_PROGRAM or !glIsProgram($SHADER_PROGRAM)) {
469+
$SHADER_PROGRAM = $this->compile_program($vertex_shader, $fragment_shader);
470+
}
469471
if (!defined $this->{Impl}{program_nodestroy}) {
470472
$this->{Impl}{program_nodestroy} = $SHADER_PROGRAM;
471473
$this->load_attrib(position => $this->{Impl}{vertices});

0 commit comments

Comments
 (0)