添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

After running offscreen rendering a few times, I get the following error.

[...].py", line 296, in createPointCloudFromView
depth = self.renderer.render(self.scene, flags=self.flags)
File "[...]/env/lib/python3.7/site-packages/pyrender/offscreen.py", line 86, in render
self._platform.make_current()
File "[...]/env/lib/python3.7/site-packages/pyrender/platforms/egl.py", line 198, in make_current
self._egl_context
File "[...]/env/lib/python3.7/site-packages/OpenGL/error.py", line 232, in glCheckError
baseOperation = baseOperation,
OpenGL.error.GLError: GLError(
err = 12289,
baseOperation = eglMakeCurrent,
cArguments = (
<OpenGL._opaque.EGLDisplay_pointer object at 0x7f5c66d3cf80>,
<OpenGL._opaque.EGLSurface_pointer object at 0x7f5bf8a5ae60>,
<OpenGL._opaque.EGLSurface_pointer object at 0x7f5bf8a5ae60>,
<OpenGL._opaque.EGLContext_pointer object at 0x7f5c62539a70>,
result = 0

I'm using EGL, i.e., PYOPENGL_PLATFORM=egl , Python 3.7.5, nvidia-450 and Ubuntu 16.04.

Same issue here. I'm on Ubuntu 18.04, Python 3.6.12, and nvidia 435.21.

  File "/home/huy/anaconda3/envs/softgym/lib/python3.6/site-packages/pyrender/offscreen.py", line 31, in __init__
    self._create()
  File "/home/huy/anaconda3/envs/softgym/lib/python3.6/site-packages/pyrender/offscreen.py", line 149, in _create
    self._platform.init_context()
  File "/home/huy/anaconda3/envs/softgym/lib/python3.6/site-packages/pyrender/platforms/egl.py", line 192, in init_context
    self.make_current()
  File "/home/huy/anaconda3/envs/softgym/lib/python3.6/site-packages/pyrender/platforms/egl.py", line 198, in make_current
    self._egl_context
  File "/home/huy/anaconda3/envs/softgym/lib/python3.6/site-packages/OpenGL/platform/baseplatform.py", line 402, in __call__
    return self( *args, **named )
  File "/home/huy/anaconda3/envs/softgym/lib/python3.6/site-packages/OpenGL/error.py", line 232, in glCheckError
    baseOperation = baseOperation,
OpenGL.error.GLError: GLError(
	err = 12290,
	baseOperation = eglMakeCurrent,
	cArguments = (
		<OpenGL._opaque.EGLDisplay_pointer object at 0x7efdffc1ed90>,
		<OpenGL._opaque.EGLSurface_pointer object at 0x7efdffbf18c8>,
		<OpenGL._opaque.EGLSurface_pointer object at 0x7efdffbf18c8>,
		<OpenGL._opaque.EGLContext_pointer object at 0x7efdffbb7d90>,
	result = 0
          

In my case, my problem was creating the offscreen renderer within every loop (i.e., calling render = pyrender.OffscreenRenderer). It works okay 'osmesa' as the pyopengl platform. But, for 'egl', it seems to have a problem with automatically get rid of opengl related things. So I just put renderer.delete() that will call the self.delete() of the OffscreenRenderer inside the loop. Hope it helps.

edz-o, dldaisy, SamMaoYS, noahstier, AlanJiang98, Auratons, ysterin, jungerm2, FuchengSu, yufeiwang63, and 9 more reacted with thumbs up emoji dldaisy, FuchengSu, yufeiwang63, Qingcsai, and mks0601 reacted with hooray emoji ysterin, FuchengSu, yufeiwang63, Qingcsai, and mks0601 reacted with rocket emoji All reactions

@SuwoongHeo I don't understand what you saying. I got same rror:

/OpenGL/error.py", line 228, in glCheckError
    raise GLError(
OpenGL.error.GLError: GLError(
	err = 12290,
	baseOperation = eglMakeCurrent,
	cArguments = (
		<OpenGL._opaque.EGLDisplay_pointer object at 0x7ff528e2ccc0>,
		<OpenGL._opaque.EGLSurface_pointer object at 0x7ff528e2c2c0>,
		<OpenGL._opaque.EGLSurface_pointer object at 0x7ff528e2c2c0>,
		<OpenGL._opaque.EGLContext_pointer object at 0x7ff528e52bc0>,
	result = 0

@SuwoongHeo I don't understand what you saying. I got same rror:

/OpenGL/error.py", line 228, in glCheckError
    raise GLError(
OpenGL.error.GLError: GLError(
	err = 12290,
	baseOperation = eglMakeCurrent,
	cArguments = (
		<OpenGL._opaque.EGLDisplay_pointer object at 0x7ff528e2ccc0>,
		<OpenGL._opaque.EGLSurface_pointer object at 0x7ff528e2c2c0>,
		<OpenGL._opaque.EGLSurface_pointer object at 0x7ff528e2c2c0>,
		<OpenGL._opaque.EGLContext_pointer object at 0x7ff528e52bc0>,
	result = 0

@jinfagang Just add renderer.delete() at the next line of rgb, depth = renderer.render(scene, flags=pyrender.RenderFlags.RGBA) as @SuwoongHeo said, that works for me.