Genesis icon indicating copy to clipboard operation
Genesis copied to clipboard

Fixing OpenGL.error.Error when running Genesis quick start

Open youliangtan opened this issue 10 months ago • 4 comments

Summary

Thanks for this awesome work! Im getting OpenGL.error.Error: Attempt to retrieve context when no valid context when running the quickstart code for genesis. My env is python 3.12 and ubuntu 22.04

The quick fix is to add set osmesa instead of egl. example:

PYOPENGL_PLATFORM=osmesa python test_gs.py 

Error logs

(genesis) youliang@youliang-Precision-5690:~$ python test_gs.py 
[Genesis] [18:19:55] [INFO] ╭───────────────────────────────────────────────────────────────────────╮
[Genesis] [18:19:55] [INFO] │┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈ Genesis ┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈│
[Genesis] [18:19:55] [INFO] ╰───────────────────────────────────────────────────────────────────────╯
[Genesis] [18:19:55] [INFO] Running on [Intel(R) Core(TM) Ultra 7 165H] with backend gs.cpu. Device memory: 62.26 GB.
[Genesis] [18:19:55] [INFO] 🚀 Genesis initialized. 🔖 version: 0.2.0, 🌱 seed: None, 📏 precision: '32', 🐛 debug: False, 🎨 theme: 'dark'.
[Genesis] [18:19:55] [INFO] Scene <a9eeac3> created.
[Genesis] [18:19:55] [INFO] Adding <gs.RigidEntity>. idx: 0, uid: <ec0dd58>, morph: <gs.morphs.Plane>, material: <gs.materials.Rigid>.
[Genesis] [18:19:55] [INFO] Adding <gs.RigidEntity>. idx: 1, uid: <e3074a9>, morph: <gs.morphs.MJCF(file='/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/assets/xml/franka_emika_panda/panda.xml')>, material: <gs.materials.Rigid>.
[Genesis] [18:19:56] [INFO] Building scene <a9eeac3>...
[Genesis] [18:19:59] [INFO] Compiling simulation kernels...
[Genesis] [18:20:03] [INFO] Building visualizer...
Exception in thread Thread-2 (_init_and_start_app):
Traceback (most recent call last):
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/threading.py", line 1075, in _bootstrap_inner
    self.run()
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/threading.py", line 1012, in run
    self._target(*self._args, **self._kwargs)
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/viewer.py", line 1149, in _init_and_start_app
    pyglet.clock.tick()
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/pyglet/clock.py", line 528, in tick
    return _default.tick(poll)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/pyglet/clock.py", line 270, in tick
    self.call_scheduled_functions(delta_t)
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/pyglet/clock.py", line 217, in call_scheduled_functions
    item.func(now - item.last_ts, *item.args, **item.kwargs)
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/viewer.py", line 941, in _time_event
    self.on_draw()
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/viewer.py", line 640, in on_draw
    self._render()
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/viewer.py", line 1086, in _render
    retval = renderer.render(self.scene, flags, seg_node_map=seg_node_map)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/renderer.py", line 141, in render
    self._update_context(scene, flags)
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/renderer.py", line 899, in _update_context
    p._add_to_context()
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/genesis/ext/pyrender/primitive.py", line 359, in _add_to_context
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, FLOAT_SZ * 3, ctypes.c_void_p(0))
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/OpenGL/latebind.py", line 63, in __call__
    return self.wrapperFunction( self.baseFunction, *args, **named )
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/OpenGL/GL/VERSION/GL_2_0.py", line 469, in glVertexAttribPointer
    contextdata.setValue( key, array )
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/OpenGL/contextdata.py", line 58, in setValue
    context = getContext( context )
              ^^^^^^^^^^^^^^^^^^^^^
  File "/home/youliang/miniconda3/envs/genesis/lib/python3.12/site-packages/OpenGL/contextdata.py", line 40, in getContext
    raise error.Error(
OpenGL.error.Error: Attempt to retrieve context when no valid context

youliangtan avatar Dec 19 '24 02:12 youliangtan