From cbc5fcb7c8495c9aaadad3a45435a8040a72d389 Mon Sep 17 00:00:00 2001 From: Quantum Date: Tue, 28 Aug 2018 23:35:03 -0400 Subject: [PATCH] Fixup: do not attempt to render asteroid belts without glVertexAttribDivisor --- punyverse/entity.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/punyverse/entity.py b/punyverse/entity.py index 7809f3e..91b23f9 100644 --- a/punyverse/entity.py +++ b/punyverse/entity.py @@ -100,13 +100,16 @@ class Belt(Entity): argument = info.get('argument', 0) rotation = info.get('period', 31536000) models = info['model'] - if not isinstance(models, list): - models = [models] - - self.objects = [WavefrontVBO(load_model(model), info.get('sx', scale), info.get('sy', scale), - info.get('sz', scale)) for model in models] - self.belt = BeltVBO(radius, cross, len(self.objects), count) self.rotation_angle = 360.0 / rotation if rotation else 0 + self.render = gl_info.have_version(3, 3) + + if self.render: + if not isinstance(models, list): + models = [models] + + self.objects = [WavefrontVBO(load_model(model), info.get('sx', scale), info.get('sy', scale), + info.get('sz', scale)) for model in models] + self.belt = BeltVBO(radius, cross, len(self.objects), count) super(Belt, self).__init__(world, name, (x, y, z), (inclination, longitude, argument)) @@ -116,6 +119,9 @@ class Belt(Entity): self.rotation = pitch, self.world.tick * self.rotation_angle % 360, roll def draw(self, options): + if not self.render: + return + shader = self.world.activate_shader('belt') shader.uniform_mat4('u_mvpMatrix', self.mvp_matrix) shader.uniform_mat4('u_mvMatrix', self.mv_matrix)