Introduced OSG_GL*_FEATURES macros defined in include/GL that are set to 0 or 1 according to what the assocoated version of GL is compiled against.
Removed EXT postfix of FrameBufferObject functions, and added support for checking non EXT versions frame buffer object GL functions. Introduced usage of OSG_GL*_FEATURES to avoid some #if #else #endif code blocks. Using a submissions from Paul Martz as a guide added perliminary GL3 support to a range of OSG classes
This commit is contained in:
@@ -136,46 +136,46 @@ namespace osg
|
||||
class OSG_EXPORT FBOExtensions : public osg::Referenced
|
||||
{
|
||||
public:
|
||||
typedef void APIENTRY TglBindRenderbufferEXT(GLenum, GLuint);
|
||||
typedef void APIENTRY TglDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers);
|
||||
typedef void APIENTRY TglGenRenderbuffersEXT(GLsizei, GLuint *);
|
||||
typedef void APIENTRY TglRenderbufferStorageEXT(GLenum, GLenum, GLsizei, GLsizei);
|
||||
typedef void APIENTRY TglRenderbufferStorageMultisampleEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
|
||||
typedef void APIENTRY TglBindRenderbuffer(GLenum, GLuint);
|
||||
typedef void APIENTRY TglDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers);
|
||||
typedef void APIENTRY TglGenRenderbuffers(GLsizei, GLuint *);
|
||||
typedef void APIENTRY TglRenderbufferStorage(GLenum, GLenum, GLsizei, GLsizei);
|
||||
typedef void APIENTRY TglRenderbufferStorageMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
|
||||
typedef void APIENTRY TglRenderbufferStorageMultisampleCoverageNV(GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
|
||||
typedef void APIENTRY TglBindFramebufferEXT(GLenum, GLuint);
|
||||
typedef void APIENTRY TglDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers);
|
||||
typedef void APIENTRY TglGenFramebuffersEXT(GLsizei, GLuint *);
|
||||
typedef GLenum APIENTRY TglCheckFramebufferStatusEXT(GLenum);
|
||||
typedef void APIENTRY TglFramebufferTexture1DEXT(GLenum, GLenum, GLenum, GLuint, GLint);
|
||||
typedef void APIENTRY TglFramebufferTexture2DEXT(GLenum, GLenum, GLenum, GLuint, GLint);
|
||||
typedef void APIENTRY TglFramebufferTexture3DEXT(GLenum, GLenum, GLenum, GLuint, GLint, GLint);
|
||||
typedef void APIENTRY TglFramebufferTextureLayerEXT(GLenum, GLenum, GLuint, GLint, GLint);
|
||||
typedef void APIENTRY TglFramebufferRenderbufferEXT(GLenum, GLenum, GLenum, GLuint);
|
||||
typedef void APIENTRY TglGenerateMipmapEXT(GLenum);
|
||||
typedef void APIENTRY TglBlitFramebufferEXT(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
|
||||
typedef void APIENTRY TglBindFramebuffer(GLenum, GLuint);
|
||||
typedef void APIENTRY TglDeleteFramebuffers(GLsizei n, const GLuint *framebuffers);
|
||||
typedef void APIENTRY TglGenFramebuffers(GLsizei, GLuint *);
|
||||
typedef GLenum APIENTRY TglCheckFramebufferStatus(GLenum);
|
||||
typedef void APIENTRY TglFramebufferTexture1D(GLenum, GLenum, GLenum, GLuint, GLint);
|
||||
typedef void APIENTRY TglFramebufferTexture2D(GLenum, GLenum, GLenum, GLuint, GLint);
|
||||
typedef void APIENTRY TglFramebufferTexture3D(GLenum, GLenum, GLenum, GLuint, GLint, GLint);
|
||||
typedef void APIENTRY TglFramebufferTextureLayer(GLenum, GLenum, GLuint, GLint, GLint);
|
||||
typedef void APIENTRY TglFramebufferRenderbuffer(GLenum, GLenum, GLenum, GLuint);
|
||||
typedef void APIENTRY TglGenerateMipmap(GLenum);
|
||||
typedef void APIENTRY TglBlitFramebuffer(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
|
||||
|
||||
TglBindRenderbufferEXT* glBindRenderbufferEXT;
|
||||
TglGenRenderbuffersEXT* glGenRenderbuffersEXT;
|
||||
TglDeleteRenderbuffersEXT* glDeleteRenderbuffersEXT;
|
||||
TglRenderbufferStorageEXT* glRenderbufferStorageEXT;
|
||||
TglRenderbufferStorageMultisampleEXT* glRenderbufferStorageMultisampleEXT;
|
||||
TglBindRenderbuffer* glBindRenderbuffer;
|
||||
TglGenRenderbuffers* glGenRenderbuffers;
|
||||
TglDeleteRenderbuffers* glDeleteRenderbuffers;
|
||||
TglRenderbufferStorage* glRenderbufferStorage;
|
||||
TglRenderbufferStorageMultisample* glRenderbufferStorageMultisample;
|
||||
TglRenderbufferStorageMultisampleCoverageNV* glRenderbufferStorageMultisampleCoverageNV;
|
||||
TglBindFramebufferEXT* glBindFramebufferEXT;
|
||||
TglDeleteFramebuffersEXT* glDeleteFramebuffersEXT;
|
||||
TglGenFramebuffersEXT* glGenFramebuffersEXT;
|
||||
TglCheckFramebufferStatusEXT* glCheckFramebufferStatusEXT;
|
||||
TglFramebufferTexture1DEXT* glFramebufferTexture1DEXT;
|
||||
TglFramebufferTexture2DEXT* glFramebufferTexture2DEXT;
|
||||
TglFramebufferTexture3DEXT* glFramebufferTexture3DEXT;
|
||||
TglFramebufferTextureLayerEXT* glFramebufferTextureLayerEXT;
|
||||
TglFramebufferRenderbufferEXT* glFramebufferRenderbufferEXT;
|
||||
TglGenerateMipmapEXT* glGenerateMipmapEXT;
|
||||
TglBlitFramebufferEXT* glBlitFramebufferEXT;
|
||||
TglBindFramebuffer* glBindFramebuffer;
|
||||
TglDeleteFramebuffers* glDeleteFramebuffers;
|
||||
TglGenFramebuffers* glGenFramebuffers;
|
||||
TglCheckFramebufferStatus* glCheckFramebufferStatus;
|
||||
TglFramebufferTexture1D* glFramebufferTexture1D;
|
||||
TglFramebufferTexture2D* glFramebufferTexture2D;
|
||||
TglFramebufferTexture3D* glFramebufferTexture3D;
|
||||
TglFramebufferTextureLayer* glFramebufferTextureLayer;
|
||||
TglFramebufferRenderbuffer* glFramebufferRenderbuffer;
|
||||
TglGenerateMipmap* glGenerateMipmap;
|
||||
TglBlitFramebuffer* glBlitFramebuffer;
|
||||
|
||||
static FBOExtensions* instance(unsigned contextID, bool createIfNotInitalized);
|
||||
|
||||
bool isSupported() const { return _supported; }
|
||||
bool isMultisampleSupported() const { return glRenderbufferStorageMultisampleEXT != 0; }
|
||||
bool isMultisampleSupported() const { return glRenderbufferStorageMultisample != 0; }
|
||||
bool isMultisampleCoverageSupported() const { return glRenderbufferStorageMultisampleCoverageNV != 0; }
|
||||
bool isPackedDepthStencilSupported() const { return _packed_depth_stencil_supported; }
|
||||
|
||||
|
||||
@@ -162,4 +162,35 @@
|
||||
#define GL_LUMINANCE_ALPHA 0x190A
|
||||
#endif
|
||||
|
||||
#ifdef OSG_GL1_AVAILABLE
|
||||
#define OSG_GL1_FEATURES 1
|
||||
#else
|
||||
#define OSG_GL1_FEATURES 0
|
||||
#endif
|
||||
|
||||
#ifdef OSG_GL2_AVAILABLE
|
||||
#define OSG_GL2_FEATURES 1
|
||||
#else
|
||||
#define OSG_GL2_FEATURES 0
|
||||
#endif
|
||||
|
||||
#ifdef OSG_GL3_AVAILABLE
|
||||
#define OSG_GL3_FEATURES 1
|
||||
#else
|
||||
#define OSG_GL3_FEATURES 0
|
||||
#endif
|
||||
|
||||
#ifdef OSG_GLES1_AVAILABLE
|
||||
#define OSG_GLES1_FEATURES 1
|
||||
#else
|
||||
#define OSG_GLES1_FEATURES 0
|
||||
#endif
|
||||
|
||||
#ifdef OSG_GLES2_AVAILABLE
|
||||
#define OSG_GLES2_FEATURES 1
|
||||
#else
|
||||
#define OSG_GLES2_FEATURES 0
|
||||
#endif
|
||||
|
||||
|
||||
#endif // __osgGL_h
|
||||
|
||||
Reference in New Issue
Block a user