Another fix for the linux device by zeitgeisty. Added another OpenGL Stencil extension.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@739 dfc29bdd-3216-0410-991c-e03cc46cb475
master
hybrid 2007-06-27 21:47:55 +00:00
parent ad19e6eb80
commit 0d00c3be2d
2 changed files with 16 additions and 3 deletions

View File

@ -104,8 +104,6 @@ CIrrDeviceLinux::~CIrrDeviceLinux()
XFree(StdHints); XFree(StdHints);
if (display) if (display)
{ {
//os::Printer::log("Deleting window...", ELL_INFORMATION);
#ifdef _IRR_COMPILE_WITH_OPENGL_ #ifdef _IRR_COMPILE_WITH_OPENGL_
if (Context) if (Context)
{ {
@ -591,7 +589,8 @@ bool CIrrDeviceLinux::createWindow(const core::dimension2d<s32>& windowSize,
ZPixmap, 0, 0, Width, Height, ZPixmap, 0, 0, Width, Height,
BitmapPad(display), 0); BitmapPad(display), 0);
SoftwareImage->data = new char[SoftwareImage->bytes_per_line * SoftwareImage->height]; // use malloc because X will free it later on
SoftwareImage->data = (char*) malloc(SoftwareImage->bytes_per_line * SoftwareImage->height * sizeof(char));
} }
XFree(visual); XFree(visual);

View File

@ -725,6 +725,7 @@ class COpenGLExtensionHandler
void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers); void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers);
void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void extGlActiveStencilFace(GLenum face);
protected: protected:
// the global feature array // the global feature array
@ -785,6 +786,7 @@ class COpenGLExtensionHandler
PFNGLGENRENDERBUFFERSEXTPROC pGlGenRenderbuffersEXT; PFNGLGENRENDERBUFFERSEXTPROC pGlGenRenderbuffersEXT;
PFNGLRENDERBUFFERSTORAGEEXTPROC pGlRenderbufferStorageEXT; PFNGLRENDERBUFFERSTORAGEEXTPROC pGlRenderbufferStorageEXT;
PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pGlFramebufferRenderbufferEXT; PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC pGlFramebufferRenderbufferEXT;
PFNGLACTIVESTENCILFACEEXTPROC pGlActiveStencilFaceEXT;
#endif #endif
}; };
@ -1305,6 +1307,18 @@ inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target,
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlActiveStencilFaceEXT)
pGlActiveStencilFaceEXT(face);
#elif defined(GL_EXT_stencil_two_side)
glActiveStencilFaceEXT(face);
#else
os::Printer::log("glActiveStencilFace not supported", ELL_ERROR);
#endif
}
} }
} }