PyBullet setup.py: only enable BT_USE_EGL on Linux, but allow to run the eglPlugin on Windows and Mac as well (using their default opengl window).

postpone the 'loadPlugin' for static eglPlugin, so that the init and exit happen in the same thread.
When you don't call unloadPlugin, the program may crash when exiting in SHARED_MEMORY_SERVER mode.
This commit is contained in:
erwincoumans
2018-09-09 21:08:47 -07:00
parent 2744e84592
commit 9698c3d600
6 changed files with 59 additions and 13 deletions

View File

@@ -161,6 +161,8 @@ struct EGLRendererVisualShapeConverterInternalData
glClearColor(.7f, .7f, .8f, 1.f);
m_window->startRendering();
b3Assert(glGetError() ==GL_NO_ERROR);
@@ -170,21 +172,34 @@ struct EGLRendererVisualShapeConverterInternalData
int maxNumObjectCapacity = 128 * 1024;
int maxShapeCapacityInBytes = 128 * 1024 * 1024;
m_instancingRenderer = new GLInstancingRenderer(maxNumObjectCapacity, maxShapeCapacityInBytes);
b3Assert(glGetError() ==GL_NO_ERROR);
m_instancingRenderer->init();
b3Assert(glGetError() ==GL_NO_ERROR);
m_instancingRenderer->resize(m_swWidth,m_swHeight);
m_instancingRenderer->InitShaders();
b3Assert(glGetError() ==GL_NO_ERROR);
m_instancingRenderer->setActiveCamera(&m_camera);
b3Assert(glGetError() ==GL_NO_ERROR);
m_instancingRenderer->updateCamera();
b3Assert(glGetError() ==GL_NO_ERROR);
m_instancingRenderer->setLightPosition(m_lightDirection);
m_window->endRendering();
}
virtual ~EGLRendererVisualShapeConverterInternalData()
{
delete m_instancingRenderer;
m_window->closeWindow();
delete m_window;
}
};
EGLRendererVisualShapeConverter::EGLRendererVisualShapeConverter()
{
m_data = new EGLRendererVisualShapeConverterInternalData();
m_data = new EGLRendererVisualShapeConverterInternalData();
float dist = 1.5;
float pitch = -10;