I just use the basic sample code to test Render Pipeline + panda3d 1.10.9 in Ubuntu 18.04. It works fine with X11. But after switching to EGL for headless rendering, I got a bunch of frame buffer errors. :display:gsg:glgsg(error): GL_INVALID_FRAMEBUFFER_OPERATION error generated. Operation is not valid because a bound framebuffer is not framebuffer complete.
Here is my testing code:
import sys
from direct.showbase.ShowBase import ShowBase
from panda3d.core import loadPrcFileData
class Application(ShowBase):
def __init__(self):
loadPrcFileData("", "window-type offscreen")
loadPrcFileData("", "aux-display p3headlessgl")
loadPrcFileData('', 'load-display pandagl')
loadPrcFileData('', 'gl-coordinate-system default')
loadPrcFileData('', 'notify-level-gobj info')
sys.path.insert(0, "/usr/share/rgbtracking/sp-renderpipeline/")
# Import the main render pipeline class
from rpcore import RenderPipeline
# Construct and create the pipeline
self.render_pipeline = RenderPipeline()
self.render_pipeline.create(self)
# Save some offline frames.
base.graphicsEngine.renderFrame()
base.screenshot('test1.jpg', defaultFilename=False)
base.graphicsEngine.renderFrame()
base.screenshot('test2.jpg', defaultFilename=False)
base.graphicsEngine.renderFrame()
base.screenshot('test3.jpg', defaultFilename=False)
base.graphicsEngine.renderFrame()
base.screenshot('test.jpg', defaultFilename=False)
Application().run()
Based on the log, it seems like the Sky Occlusion and Environment Probes plugins do not work well under EGL.
Has anyone ever tried to use render pipeline with EGL/headless rendering?