diff --git a/Demos3/bullet2/RagdollDemo/RagdollDemo.h b/Demos3/bullet2/RagdollDemo/RagdollDemo.h index e633d0574..e42379565 100644 --- a/Demos3/bullet2/RagdollDemo/RagdollDemo.h +++ b/Demos3/bullet2/RagdollDemo/RagdollDemo.h @@ -2,7 +2,7 @@ #define RAGDOLL_DEMO_H -#include "../../Demos/CommonRigidBodySetup.h" +#include "../../../Demos/CommonRigidBodySetup.h" #include "../BasicDemo/BasicDemo.h" struct BulletDemoInterface; diff --git a/btgui/OpenGLWindow/GLRenderToTexture.cpp b/btgui/OpenGLWindow/GLRenderToTexture.cpp index 04a028ea8..ed9dec575 100644 --- a/btgui/OpenGLWindow/GLRenderToTexture.cpp +++ b/btgui/OpenGLWindow/GLRenderToTexture.cpp @@ -1,6 +1,8 @@ ///See http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/ +bool gIntelLinuxglDrawBufferWorkaround=false; + #include "GLRenderToTexture.h" #include "Bullet3Common/b3Scalar.h" // for b3Assert GLRenderToTexture::GLRenderToTexture() @@ -66,9 +68,16 @@ bool GLRenderToTexture::enable() } case RENDERTEXTURE_DEPTH: { - GLenum drawBuffers[2] = { GL_COLOR_ATTACHMENT0, 0 };// GL_DEPTH_ATTACHMENT, 0}; - glDrawBuffers(1, drawBuffers); -// glDrawBuffer(GL_NONE); + //Intel OpenGL driver crashes when using GL_NONE for glDrawBuffer on Linux, so use a workaround + if (gIntelLinuxglDrawBufferWorkaround) + { + GLenum drawBuffers[2] = { GL_DEPTH_ATTACHMENT,0}; + glDrawBuffers(1, drawBuffers); + + } else + { + glDrawBuffer(GL_NONE); + } break; } default: diff --git a/btgui/OpenGLWindow/X11OpenGLWindow.cpp b/btgui/OpenGLWindow/X11OpenGLWindow.cpp index 2091c1d86..a872767b0 100644 --- a/btgui/OpenGLWindow/X11OpenGLWindow.cpp +++ b/btgui/OpenGLWindow/X11OpenGLWindow.cpp @@ -15,6 +15,7 @@ #include #include +extern bool gIntelLinuxglDrawBufferWorkaround; GLint att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None }; static bool forceOpenGL3 = true; @@ -233,6 +234,12 @@ void X11OpenGLWindow::enableOpenGL() } const GLubyte* ven = glGetString(GL_VENDOR); printf("GL_VENDOR=%s\n", ven); + + if (strncmp((const char*)ven,"Intel",5)==0) + { + printf("Workaround for some crash in the Intel OpenGL driver on Linux/Ubuntu\n"); + gIntelLinuxglDrawBufferWorkaround=true; + } const GLubyte* ren = glGetString(GL_RENDERER); printf("GL_RENDERER=%s\n",ren); const GLubyte* ver = glGetString(GL_VERSION);