Outright require OpenGL 3.3.

pyglet seems to detect MESA as 3.0 even though it supports 3.3, even when I create a 3.3 context.
This commit is contained in:
Quantum 2018-08-29 03:10:27 -04:00
parent 52c1a328aa
commit 85d4bd4efc
3 changed files with 21 additions and 24 deletions

View file

@ -102,30 +102,28 @@ class Belt(Entity):
rotation = info.get('period', 31536000) rotation = info.get('period', 31536000)
models = info['model'] models = info['model']
self.rotation_angle = 360.0 / rotation if rotation else 0 self.rotation_angle = 360.0 / rotation if rotation else 0
self.render = gl_info.have_version(3, 3)
if self.render: shader = world.activate_shader('belt')
shader = world.activate_shader('belt') if not isinstance(models, list):
if not isinstance(models, list): models = [models]
models = [models]
self.belt = BeltVBO(radius, cross, len(models), count) self.belt = BeltVBO(radius, cross, len(models), count)
self.objects = [ self.objects = [
WavefrontVBO(load_model(model), shader, info.get('sx', scale), WavefrontVBO(load_model(model), shader, info.get('sx', scale),
info.get('sy', scale), info.get('sz', scale)) info.get('sy', scale), info.get('sz', scale))
for model in models for model in models
] ]
def callback(): def callback():
glBindBuffer(GL_ARRAY_BUFFER, vbo) glBindBuffer(GL_ARRAY_BUFFER, vbo)
shader.vertex_attribute('a_translate', self.belt.location_size, self.belt.type, GL_FALSE, shader.vertex_attribute('a_translate', self.belt.location_size, self.belt.type, GL_FALSE,
self.belt.stride, self.belt.location_offset, divisor=1) self.belt.stride, self.belt.location_offset, divisor=1)
shader.vertex_attribute('a_scale', self.belt.scale_size, self.belt.type, GL_FALSE, shader.vertex_attribute('a_scale', self.belt.scale_size, self.belt.type, GL_FALSE,
self.belt.stride, self.belt.scale_offset, divisor=1) self.belt.stride, self.belt.scale_offset, divisor=1)
glBindBuffer(GL_ARRAY_BUFFER, 0) glBindBuffer(GL_ARRAY_BUFFER, 0)
for model, vbo, count in zip(self.objects, self.belt.vbo, self.belt.sizes): for model, vbo, count in zip(self.objects, self.belt.vbo, self.belt.sizes):
model.additional_attributes(callback) model.additional_attributes(callback)
super(Belt, self).__init__(world, name, (x, y, z), (inclination, longitude, argument)) super(Belt, self).__init__(world, name, (x, y, z), (inclination, longitude, argument))
@ -135,9 +133,6 @@ class Belt(Entity):
self.rotation = pitch, self.world.tick * self.rotation_angle % 360, roll self.rotation = pitch, self.world.tick * self.rotation_angle % 360, roll
def draw(self, options): def draw(self, options):
if not self.render:
return
shader = self.world.activate_shader('belt') shader = self.world.activate_shader('belt')
shader.uniform_mat4('u_mvpMatrix', self.mvp_matrix) shader.uniform_mat4('u_mvpMatrix', self.mvp_matrix)
shader.uniform_mat4('u_mvMatrix', self.mv_matrix) shader.uniform_mat4('u_mvMatrix', self.mv_matrix)

View file

@ -78,6 +78,8 @@ def get_context_info(context):
zip_longest(info[::2], info[1::2], fillvalue='')] zip_longest(info[::2], info[1::2], fillvalue='')]
with glContext(context): with glContext(context):
gl_info.remove_active_context()
gl_info.set_active_context()
return '\n'.join([ return '\n'.join([
'Graphics Vendor: ' + gl_info.get_vendor(), 'Graphics Vendor: ' + gl_info.get_vendor(),
'Graphics Version: ' + gl_info.get_version(), 'Graphics Version: ' + gl_info.get_version(),

View file

@ -27,7 +27,7 @@ def main():
template = pyglet.gl.Config(depth_size=args.depth, double_buffer=True, template = pyglet.gl.Config(depth_size=args.depth, double_buffer=True,
sample_buffers=args.multisample > 1, sample_buffers=args.multisample > 1,
samples=args.multisample, samples=args.multisample,
major_version=3, minor_version=2) major_version=3, minor_version=3)
platform = pyglet.window.get_platform() platform = pyglet.window.get_platform()
display = platform.get_default_display() display = platform.get_default_display()