diff --git a/code/nel/src/3d/driver/opengl3/driver_opengl.cpp b/code/nel/src/3d/driver/opengl3/driver_opengl.cpp index a651a2938..d64914fb5 100644 --- a/code/nel/src/3d/driver/opengl3/driver_opengl.cpp +++ b/code/nel/src/3d/driver/opengl3/driver_opengl.cpp @@ -373,10 +373,15 @@ bool CDriverGL3::setupDisplay() #endif // NL_OS_WINDOWS // Check required extensions!! + if (!_Extensions.GLCore) + { + nlwarning("Missing required GL 3.30 Core features. Update your driver"); + throw EBadDisplay("Missing required GL 3.30 Core features. Update your driver"); + } if (!_Extensions.ARBSeparateShaderObjects) { - nlwarning("Missing Required GL extension: GL_ARB_separate_shader_objects. Update your driver"); - throw EBadDisplay("Missing Required GL extension: GL_ARB_separate_shader_objects. Update your driver"); + nlwarning("Missing required GL extension: GL_ARB_separate_shader_objects. Update your driver"); + throw EBadDisplay("Missing required GL extension: GL_ARB_separate_shader_objects. Update your driver"); } // ARBMultiTexture is a OpenGL 1.2 required extension. @@ -550,7 +555,7 @@ bool CDriverGL3::activeFrameBufferObject(ITexture * tex) } else { - nglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + nglBindFramebuffer(GL_FRAMEBUFFER, 0); return true; } } @@ -1680,7 +1685,7 @@ bool CDriverGL3::supportPackedDepthStencil() const { H_AUTO_OGL(CDriverGL3_supportPackedDepthStencil); - return _Extensions.PackedDepthStencil; + return true; } // *************************************************************************** @@ -1688,7 +1693,7 @@ bool CDriverGL3::supportFrameBufferObject() const { H_AUTO_OGL(CDriverGL3_supportFrameBufferObject); - return _Extensions.FrameBufferObject; + return true; } // *************************************************************************** diff --git a/code/nel/src/3d/driver/opengl3/driver_opengl_extension.cpp b/code/nel/src/3d/driver/opengl3/driver_opengl_extension.cpp index 2e242060b..b29efab25 100644 --- a/code/nel/src/3d/driver/opengl3/driver_opengl_extension.cpp +++ b/code/nel/src/3d/driver/opengl3/driver_opengl_extension.cpp @@ -318,6 +318,27 @@ PFNGLGETQUERYIVPROC nglGetQueryiv; PFNGLGETQUERYOBJECTIVPROC nglGetQueryObjectiv; PFNGLGETQUERYOBJECTUIVPROC nglGetQueryObjectuiv; +PFNGLISRENDERBUFFERPROC nglIsRenderbuffer; +PFNGLBINDRENDERBUFFERPROC nglBindRenderbuffer; +PFNGLDELETERENDERBUFFERSPROC nglDeleteRenderbuffers; +PFNGLGENRENDERBUFFERSPROC nglGenRenderbuffers; +PFNGLRENDERBUFFERSTORAGEPROC nglRenderbufferStorage; +PFNGLGETRENDERBUFFERPARAMETERIVPROC nglGetRenderbufferParameteriv; +PFNGLISFRAMEBUFFERPROC nglIsFramebuffer; +PFNGLBINDFRAMEBUFFERPROC nglBindFramebuffer; +PFNGLDELETEFRAMEBUFFERSPROC nglDeleteFramebuffers; +PFNGLGENFRAMEBUFFERSPROC nglGenFramebuffers; +PFNGLCHECKFRAMEBUFFERSTATUSPROC nglCheckFramebufferStatus; +PFNGLFRAMEBUFFERTEXTURE1DPROC nglFramebufferTexture1D; +PFNGLFRAMEBUFFERTEXTURE2DPROC nglFramebufferTexture2D; +PFNGLFRAMEBUFFERTEXTURE3DPROC nglFramebufferTexture3D; +PFNGLFRAMEBUFFERRENDERBUFFERPROC nglFramebufferRenderbuffer; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC nglGetFramebufferAttachmentParameteriv; +PFNGLGENERATEMIPMAPPROC nglGenerateMipmap; +PFNGLBLITFRAMEBUFFERPROC nglBlitFramebuffer; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC nglRenderbufferStorageMultisample; +PFNGLFRAMEBUFFERTEXTURELAYERPROC nglFramebufferTextureLayer; + // GL_ARB_separate_shader_objects PFNGLUSEPROGRAMSTAGESPROC nglUseProgramStages; PFNGLACTIVESHADERPROGRAMPROC nglActiveShaderProgram; @@ -380,28 +401,6 @@ PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC nglProgramUniformMatrix4x3dv; PFNGLVALIDATEPROGRAMPIPELINEPROC nglValidateProgramPipeline; PFNGLGETPROGRAMPIPELINEINFOLOGPROC nglGetProgramPipelineInfoLog; -// GL_EXT_framebuffer_object -NEL_PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT; -NEL_PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT; -NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT; -NEL_PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT; -NEL_PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT; -NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT; -NEL_PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT; -NEL_PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT; -NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT; -NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT; -NEL_PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT; -NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT; -NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT; -NEL_PFNGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT; - -// GL_EXT_framebuffer_blit -NEL_PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT; - -// GL_EXT_framebuffer_multisample -NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT; - // GL_ARB_multisample NEL_PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB; @@ -701,64 +700,7 @@ static bool setupEXTTextureFilterAnisotropic(const char *glext) return true; } -// *************************************************************************** -static bool setupFrameBufferObject(const char *glext) -{ - H_AUTO_OGL(setupFrameBufferObject); - - CHECK_EXT("GL_EXT_framebuffer_object"); - - CHECK_ADDRESS(NEL_PFNGLISRENDERBUFFEREXTPROC, glIsRenderbufferEXT); - CHECK_ADDRESS(NEL_PFNGLISFRAMEBUFFEREXTPROC, glIsFramebufferEXT); - CHECK_ADDRESS(NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, glCheckFramebufferStatusEXT); - CHECK_ADDRESS(NEL_PFNGLGENFRAMEBUFFERSEXTPROC, glGenFramebuffersEXT); - CHECK_ADDRESS(NEL_PFNGLBINDFRAMEBUFFEREXTPROC, glBindFramebufferEXT); - CHECK_ADDRESS(NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC, glFramebufferTexture2DEXT); - CHECK_ADDRESS(NEL_PFNGLGENRENDERBUFFERSEXTPROC, glGenRenderbuffersEXT); - CHECK_ADDRESS(NEL_PFNGLBINDRENDERBUFFEREXTPROC, glBindRenderbufferEXT); - CHECK_ADDRESS(NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC, glRenderbufferStorageEXT); - CHECK_ADDRESS(NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC, glFramebufferRenderbufferEXT); - CHECK_ADDRESS(NEL_PFNGLDELETERENDERBUFFERSEXTPROC, glDeleteRenderbuffersEXT); - CHECK_ADDRESS(NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC, glDeleteFramebuffersEXT); - CHECK_ADDRESS(NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC, glGetRenderbufferParameterivEXT); - CHECK_ADDRESS(NEL_PFNGENERATEMIPMAPEXTPROC, glGenerateMipmapEXT); - - return true; -} - -// *************************************************************************** -static bool setupFrameBufferBlit(const char *glext) -{ - H_AUTO_OGL(setupFrameBufferBlit); - CHECK_EXT("GL_EXT_framebuffer_blit"); - - CHECK_ADDRESS(NEL_PFNGLBLITFRAMEBUFFEREXTPROC, glBlitFramebufferEXT); - - return true; -} - -// *************************************************************************** -static bool setupFrameBufferMultisample(const char *glext) -{ - H_AUTO_OGL(setupFrameBufferMultisample); - CHECK_EXT("GL_EXT_framebuffer_multisample"); - - CHECK_ADDRESS(NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glRenderbufferStorageMultisampleEXT); - - return true; -} - -// *************************************************************************** -static bool setupPackedDepthStencil(const char *glext) -{ - H_AUTO_OGL(setupPackedDepthStencil); - - CHECK_EXT("GL_EXT_packed_depth_stencil"); - - return true; -} - -static bool setupCore(const char *glext) +static bool setupGLCore(const char *glext) { CHECK_ADDRESS(PFNGLATTACHSHADERPROC, glAttachShader); CHECK_ADDRESS(PFNGLCOMPILESHADERPROC, glCompileShader); @@ -830,6 +772,27 @@ static bool setupCore(const char *glext) CHECK_ADDRESS(PFNGLGETQUERYIVPROC, glGetQueryiv); CHECK_ADDRESS(PFNGLGETQUERYOBJECTIVPROC, glGetQueryObjectiv); CHECK_ADDRESS(PFNGLGETQUERYOBJECTUIVPROC, glGetQueryObjectuiv); + + CHECK_ADDRESS(PFNGLISRENDERBUFFERPROC, glIsRenderbuffer); + CHECK_ADDRESS(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer); + CHECK_ADDRESS(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers); + CHECK_ADDRESS(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers); + CHECK_ADDRESS(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage); + CHECK_ADDRESS(PFNGLGETRENDERBUFFERPARAMETERIVPROC, glGetRenderbufferParameteriv); + CHECK_ADDRESS(PFNGLISFRAMEBUFFERPROC, glIsFramebuffer); + CHECK_ADDRESS(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer); + CHECK_ADDRESS(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers); + CHECK_ADDRESS(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers); + CHECK_ADDRESS(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus); + CHECK_ADDRESS(PFNGLFRAMEBUFFERTEXTURE1DPROC, glFramebufferTexture1D); + CHECK_ADDRESS(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D); + CHECK_ADDRESS(PFNGLFRAMEBUFFERTEXTURE3DPROC, glFramebufferTexture3D); + CHECK_ADDRESS(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer); + CHECK_ADDRESS(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetFramebufferAttachmentParameteriv); + CHECK_ADDRESS(PFNGLGENERATEMIPMAPPROC, glGenerateMipmap); + CHECK_ADDRESS(PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer); + CHECK_ADDRESS(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample); + CHECK_ADDRESS(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer); return true; } @@ -939,7 +902,7 @@ void registerGlExtensions(CGlExtensions &ext) } // Check 3.30 Core - setupCore(glext); + ext.GLCore = setupGLCore(glext); // Check GL_ARB_separate_shader_objects ext.ARBSeparateShaderObjects = setupARBSeparateShaderObjects(glext); @@ -998,18 +961,6 @@ void registerGlExtensions(CGlExtensions &ext) // get the maximum value glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &ext.EXTTextureFilterAnisotropicMaximum); } - - // Check GL_EXT_framebuffer_object - ext.FrameBufferObject = setupFrameBufferObject(glext); - - // Check GL_EXT_framebuffer_blit - ext.FrameBufferBlit = setupFrameBufferBlit(glext); - - // Check GL_EXT_framebuffer_multisample - ext.FrameBufferMultisample = setupFrameBufferMultisample(glext); - - // Check GL_EXT_packed_depth_stencil - ext.PackedDepthStencil = setupPackedDepthStencil(glext); } diff --git a/code/nel/src/3d/driver/opengl3/driver_opengl_extension.h b/code/nel/src/3d/driver/opengl3/driver_opengl_extension.h index fd8b618bc..d63893013 100644 --- a/code/nel/src/3d/driver/opengl3/driver_opengl_extension.h +++ b/code/nel/src/3d/driver/opengl3/driver_opengl_extension.h @@ -36,6 +36,7 @@ struct CGlExtensions std::string GLVersion; // Required Extensions. + bool GLCore; bool ARBSeparateShaderObjects; bool ARBMultiTexture; @@ -49,10 +50,6 @@ struct CGlExtensions bool NVTextureRectangle; bool EXTTextureRectangle; bool ARBTextureRectangle; - bool FrameBufferObject; - bool FrameBufferBlit; - bool FrameBufferMultisample; - bool PackedDepthStencil; bool EXTTextureFilterAnisotropic; float EXTTextureFilterAnisotropicMaximum; @@ -102,10 +99,6 @@ public: ARBTextureRectangle = false; ARBTextureNonPowerOfTwo = false; ARBMultisample = false; - FrameBufferObject = false; - FrameBufferBlit = false; - FrameBufferMultisample = false; - PackedDepthStencil = false; NVStateVARWithoutFlush = 0; } @@ -128,10 +121,6 @@ public: result += "texture stages(*) = "; result += NLMISC::toString(NbTextureStages); - result += "\n Programs: "; - result += "ARBFragmentProgram "; - result += "ARBVertexProgram"; - result += "\n Misc: "; result += EXTVertexWeighting ? "EXTVertexWeighting " : ""; result += EXTSeparateSpecularColor ? "EXTSeparateSpecularColor " : ""; @@ -153,15 +142,6 @@ public: result += GLXMESASwapControl ? "GLXMESASwapControl " : ""; #endif - result += "\n Array/VBO: "; - result += "VertexBufferObject"; - - result += "\n FBO: "; - result += FrameBufferObject ? "FramebufferObject " : ""; - result += FrameBufferBlit ? "FrameBufferBlit " : ""; - result += FrameBufferMultisample ? "FrameBufferMultisample " : ""; - result += PackedDepthStencil ? "PackedDepthStencil " : ""; - return result; } @@ -394,7 +374,7 @@ extern PFNGLGETVERTEXATTRIBIVARBPROC nglGetVertexAttribivARB; extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC nglGetVertexAttribPointervARB; extern PFNGLISPROGRAMARBPROC nglIsProgramARB; -// Core +// Core 3.30 extern PFNGLATTACHSHADERPROC nglAttachShader; extern PFNGLCOMPILESHADERPROC nglCompileShader; extern PFNGLCREATEPROGRAMPROC nglCreateProgram; @@ -466,6 +446,27 @@ extern PFNGLGETQUERYIVPROC nglGetQueryiv; extern PFNGLGETQUERYOBJECTIVPROC nglGetQueryObjectiv; extern PFNGLGETQUERYOBJECTUIVPROC nglGetQueryObjectuiv; +extern PFNGLISRENDERBUFFERPROC nglIsRenderbuffer; +extern PFNGLBINDRENDERBUFFERPROC nglBindRenderbuffer; +extern PFNGLDELETERENDERBUFFERSPROC nglDeleteRenderbuffers; +extern PFNGLGENRENDERBUFFERSPROC nglGenRenderbuffers; +extern PFNGLRENDERBUFFERSTORAGEPROC nglRenderbufferStorage; +extern PFNGLGETRENDERBUFFERPARAMETERIVPROC nglGetRenderbufferParameteriv; +extern PFNGLISFRAMEBUFFERPROC nglIsFramebuffer; +extern PFNGLBINDFRAMEBUFFERPROC nglBindFramebuffer; +extern PFNGLDELETEFRAMEBUFFERSPROC nglDeleteFramebuffers; +extern PFNGLGENFRAMEBUFFERSPROC nglGenFramebuffers; +extern PFNGLCHECKFRAMEBUFFERSTATUSPROC nglCheckFramebufferStatus; +extern PFNGLFRAMEBUFFERTEXTURE1DPROC nglFramebufferTexture1D; +extern PFNGLFRAMEBUFFERTEXTURE2DPROC nglFramebufferTexture2D; +extern PFNGLFRAMEBUFFERTEXTURE3DPROC nglFramebufferTexture3D; +extern PFNGLFRAMEBUFFERRENDERBUFFERPROC nglFramebufferRenderbuffer; +extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC nglGetFramebufferAttachmentParameteriv; +extern PFNGLGENERATEMIPMAPPROC nglGenerateMipmap; +extern PFNGLBLITFRAMEBUFFERPROC nglBlitFramebuffer; +extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC nglRenderbufferStorageMultisample; +extern PFNGLFRAMEBUFFERTEXTURELAYERPROC nglFramebufferTextureLayer; + // GL_ARB_separate_shader_objects extern PFNGLUSEPROGRAMSTAGESPROC nglUseProgramStages; extern PFNGLACTIVESHADERPROGRAMPROC nglActiveShaderProgram; @@ -569,28 +570,6 @@ extern NEL_PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA; #endif -// GL_EXT_framebuffer_object -extern NEL_PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT; -extern NEL_PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT; -extern NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT; -extern NEL_PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT; -extern NEL_PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT; -extern NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT; -extern NEL_PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT; -extern NEL_PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT; -extern NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT; -extern NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT; -extern NEL_PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT; -extern NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT; -extern NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT; -extern NEL_PFNGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT; - -// GL_EXT_framebuffer_blit -extern NEL_PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT; - -// GL_EXT_framebuffer_multisample -extern NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT; - // GL_ARB_multisample extern NEL_PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB; diff --git a/code/nel/src/3d/driver/opengl3/driver_opengl_extension_def.h b/code/nel/src/3d/driver/opengl3/driver_opengl_extension_def.h index 109dedd91..4aa6bf9f6 100644 --- a/code/nel/src/3d/driver/opengl3/driver_opengl_extension_def.h +++ b/code/nel/src/3d/driver/opengl3/driver_opengl_extension_def.h @@ -173,24 +173,6 @@ typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pn typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, GLvoid *string); typedef GLboolean (APIENTRY *NEL_PFNGLISPROGRAMARBPROC)(GLuint program); - -typedef GLboolean (APIENTRY * NEL_PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef GLboolean (APIENTRY * NEL_PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef GLenum (APIENTRY * NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum pname); -typedef GLvoid (APIENTRY * NEL_PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); -typedef GLvoid (APIENTRY * NEL_PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef GLvoid (APIENTRY * NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef GLvoid (APIENTRY * NEL_PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); -typedef GLvoid (APIENTRY * NEL_PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef GLvoid (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef GLvoid (APIENTRY * NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef GLvoid (APIENTRY * NEL_PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef GLvoid (APIENTRY * NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); -typedef GLvoid (APIENTRY * NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLvoid (APIENTRY * NEL_PFNGENERATEMIPMAPEXTPROC) (GLenum target); - -typedef GLvoid (APIENTRY * NEL_PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - typedef GLvoid (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); #ifndef NL_GL_ARB_multisample diff --git a/code/nel/src/3d/driver/opengl3/driver_opengl_texture.cpp b/code/nel/src/3d/driver/opengl3/driver_opengl_texture.cpp index e8e389ce7..16a512b0d 100644 --- a/code/nel/src/3d/driver/opengl3/driver_opengl_texture.cpp +++ b/code/nel/src/3d/driver/opengl3/driver_opengl_texture.cpp @@ -87,12 +87,12 @@ CTextureDrvInfosGL3::~CTextureDrvInfosGL3() if (InitFBO) { - nglDeleteFramebuffersEXT(1, &FBOId); + nglDeleteFramebuffers(1, &FBOId); if (AttachDepthStencil) { - nglDeleteRenderbuffersEXT(1, &DepthFBOId); + nglDeleteRenderbuffers(1, &DepthFBOId); if (!UsePackedDepthStencil) - nglDeleteRenderbuffersEXT(1, &StencilFBOId); + nglDeleteRenderbuffers(1, &StencilFBOId); } } } @@ -108,21 +108,21 @@ bool CTextureDrvInfosGL3::initFrameBufferObject(ITexture * tex) } // generate IDs - nglGenFramebuffersEXT(1, &FBOId); + nglGenFramebuffers(1, &FBOId); if (AttachDepthStencil) { - nglGenRenderbuffersEXT(1, &DepthFBOId); + nglGenRenderbuffers(1, &DepthFBOId); if (UsePackedDepthStencil) StencilFBOId = DepthFBOId; else - nglGenRenderbuffersEXT(1, &StencilFBOId); + nglGenRenderbuffers(1, &StencilFBOId); } //nldebug("3D: using depth %d and stencil %d", DepthFBOId, StencilFBOId); // initialize FBO - nglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBOId); - nglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, TextureMode, ID, 0); + nglBindFramebuffer(GL_FRAMEBUFFER, FBOId); + nglFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, TextureMode, ID, 0); // attach depth/stencil render to FBO // note: for some still unkown reason it's impossible to add @@ -130,113 +130,79 @@ bool CTextureDrvInfosGL3::initFrameBufferObject(ITexture * tex) // opengl.org extension registry). Until a safe approach to add // them is found, there will be no attached stencil for the time // being, aside of using packed depth+stencil buffers. + // FIXME GL3 if (AttachDepthStencil) { if (UsePackedDepthStencil) { //nldebug("3D: using packed depth stencil"); - nglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, StencilFBOId); - nglRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH24_STENCIL8_EXT, tex->getWidth(), tex->getHeight()); + nglBindRenderbuffer(GL_RENDERBUFFER, StencilFBOId); + nglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, tex->getWidth(), tex->getHeight()); } else { - nglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, DepthFBOId); - nglRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, tex->getWidth(), tex->getHeight()); + nglBindRenderbuffer(GL_RENDERBUFFER, DepthFBOId); + nglRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, tex->getWidth(), tex->getHeight()); /* - nglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, StencilFBOId); - nglRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_STENCIL_INDEX8_EXT, tex->getWidth(), tex->getHeight()); + nglBindRenderbuffer(GL_RENDERBUFFER, StencilFBOId); + nglRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, tex->getWidth(), tex->getHeight()); */ } - nglFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, - GL_RENDERBUFFER_EXT, DepthFBOId); - nldebug("3D: glFramebufferRenderbufferExt(depth:24) = %X", nglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)); - nglFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, - GL_RENDERBUFFER_EXT, StencilFBOId); - nldebug("3D: glFramebufferRenderbufferExt(stencil:8) = %X", nglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)); + nglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + GL_RENDERBUFFER, DepthFBOId); + nldebug("3D: glFramebufferRenderbufferExt(depth:24) = %X", nglCheckFramebufferStatus(GL_FRAMEBUFFER)); + nglFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, + GL_RENDERBUFFER, StencilFBOId); + nldebug("3D: glFramebufferRenderbufferExt(stencil:8) = %X", nglCheckFramebufferStatus(GL_FRAMEBUFFER)); } // check status GLenum status; - status = (GLenum) nglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); + status = (GLenum) nglCheckFramebufferStatus(GL_FRAMEBUFFER); switch(status) { -#ifdef GL_FRAMEBUFFER_COMPLETE_EXT - case GL_FRAMEBUFFER_COMPLETE_EXT: +#ifdef GL_FRAMEBUFFER_COMPLETE + case GL_FRAMEBUFFER_COMPLETE: InitFBO = true; break; #endif -#ifdef GL_FRAMEBUFFER_COMPLETE_OES - case GL_FRAMEBUFFER_COMPLETE_OES: - InitFBO = true; - break; -#endif -#ifdef GL_FRAMEBUFFER_UNSUPPORTED_EXT - case GL_FRAMEBUFFER_UNSUPPORTED_EXT: - nlwarning("Unsupported framebuffer format"); - break; -#endif -#ifdef GL_FRAMEBUFFER_UNSUPPORTED_OES - case GL_FRAMEBUFFER_UNSUPPORTED_OES: +#ifdef GL_FRAMEBUFFER_UNSUPPORTED + case GL_FRAMEBUFFER_UNSUPPORTED: nlwarning("Unsupported framebuffer format"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: +#ifdef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: nlwarning("Framebuffer incomplete attachment"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES: - nlwarning("Framebuffer incomplete attachment"); - break; -#endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: - nlwarning("Framebuffer incomplete, missing attachment"); - break; -#endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES: +#ifdef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: nlwarning("Framebuffer incomplete, missing attachment"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT - case GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT: +#ifdef GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT + case GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT: nlwarning("Framebuffer incomplete, duplicate attachment"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: +#ifdef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS + case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: nlwarning("Framebuffer incomplete, attached images must have same dimensions"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES: - nlwarning("Framebuffer incomplete, attached images must have same dimensions"); - break; -#endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT - case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: - nlwarning("Framebuffer incomplete, attached images must have same format"); - break; -#endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES - case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES: +#ifdef GL_FRAMEBUFFER_INCOMPLETE_FORMATS + case GL_FRAMEBUFFER_INCOMPLETE_FORMATS: nlwarning("Framebuffer incomplete, attached images must have same format"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: +#ifdef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER + case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: nlwarning("Framebuffer incomplete, missing draw buffer"); break; #endif -#ifdef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: - nlwarning("Framebuffer incomplete, missing read buffer"); - break; -#endif -#ifdef GL_FRAMEBUFFER_BINDING_EXT - case GL_FRAMEBUFFER_BINDING_EXT: +#ifdef GL_FRAMEBUFFER_BINDING + case GL_FRAMEBUFFER_BINDING: nlwarning("Framebuffer BINDING_EXT"); break; #endif @@ -244,11 +210,6 @@ bool CTextureDrvInfosGL3::initFrameBufferObject(ITexture * tex) case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: nlwarning("Framebuffer incomplete multisample"); break; -#endif -#ifdef GL_FRAMEBUFFER_BINDING_OES - case GL_FRAMEBUFFER_BINDING_OES: - nlwarning("Framebuffer BINDING_EXT"); - break; #endif default: nlwarning("Framebuffer incomplete status %d", (sint)status); @@ -258,14 +219,14 @@ bool CTextureDrvInfosGL3::initFrameBufferObject(ITexture * tex) // clean up resources if allocation failed if (!InitFBO) { - nglDeleteFramebuffersEXT(1, &FBOId); + nglDeleteFramebuffers(1, &FBOId); if (AttachDepthStencil) { - nglDeleteRenderbuffersEXT(1, &DepthFBOId); + nglDeleteRenderbuffers(1, &DepthFBOId); if (!UsePackedDepthStencil) - nglDeleteRenderbuffersEXT(1, &StencilFBOId); + nglDeleteRenderbuffers(1, &StencilFBOId); } } @@ -282,14 +243,14 @@ bool CTextureDrvInfosGL3::activeFrameBufferObject(ITexture * tex) if (initFrameBufferObject(tex)) { glBindTexture(TextureMode, 0); - nglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBOId); + nglBindFramebuffer(GL_FRAMEBUFFER, FBOId); } else return false; } else { - nglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + nglBindFramebuffer(GL_FRAMEBUFFER, 0); } return true;