add some more gl extensions

master
Lee Salzman 2013-02-28 22:47:31 +02:00
parent f1fd6e6328
commit ae4e720045
3 changed files with 156 additions and 19 deletions

View File

@ -108,7 +108,7 @@ static inline bool pvsoccluded(const ivec &bborigin, int size)
}
// rendergl
extern bool hasVBO, hasDRE, hasOQ, hasTR, hasT3D, hasFBO, hasAFBO, hasDS, hasTF, hasCBF, hasBE, hasBC, hasCM, hasNP2, hasTC, hasS3TC, hasFXT1, hasMT, hasAF, hasMDA, hasGLSL, hasDT, hasSH, hasPBO, hasFBB, hasFBMS, hasTMS, hasMSS, hasFBMSBS, hasNVFBMSC, hasNVTMS, hasUBO, hasMBR, hasDB, hasTG, hasT4, hasTQ, hasPF, hasTRG, hasDBT, hasDC, hasDBGO, hasGPU4, hasGPU5;
extern bool hasVBO, hasVAO, hasDRE, hasOQ, hasTR, hasT3D, hasFBO, hasAFBO, hasDS, hasTF, hasCBF, hasBE, hasBC, hasCM, hasNP2, hasTC, hasS3TC, hasFXT1, hasMT, hasAF, hasMDA, hasGLSL, hasDT, hasSH, hasPBO, hasFBB, hasFBMS, hasTMS, hasMSS, hasFBMSBS, hasNVFBMSC, hasNVTMS, hasUBO, hasMBR, hasDB, hasTG, hasT4, hasTQ, hasPF, hasTRG, hasDBT, hasDC, hasDBGO, hasGPU4, hasGPU5;
extern int glversion, glslversion;
enum { DRAWTEX_NONE = 0, DRAWTEX_ENVMAP, DRAWTEX_MINIMAP, DRAWTEX_MODELPREVIEW };

View File

@ -313,6 +313,34 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei co
#define glGetActiveUniform_ glGetActiveUniform
#define glEnableVertexAttribArray_ glEnableVertexAttribArray
#define glDisableVertexAttribArray_ glDisableVertexAttribArray
#define glVertexAttrib1f_ glVertexAttrib1f
#define glVertexAttrib1fv_ glVertexAttrib1fv
#define glVertexAttrib1s_ glVertexAttrib1s
#define glVertexAttrib1sv_ glVertexAttrib1sv
#define glVertexAttrib2f_ glVertexAttrib2f
#define glVertexAttrib2fv_ glVertexAttrib2fv
#define glVertexAttrib2s_ glVertexAttrib2s
#define glVertexAttrib2sv_ glVertexAttrib2sv
#define glVertexAttrib3f_ glVertexAttrib3f
#define glVertexAttrib3fv_ glVertexAttrib3fv
#define glVertexAttrib3s_ glVertexAttrib3s
#define glVertexAttrib3sv_ glVertexAttrib3sv
#define glVertexAttrib4f_ glVertexAttrib4f
#define glVertexAttrib4fv_ glVertexAttrib4fv
#define glVertexAttrib4s_ glVertexAttrib4s
#define glVertexAttrib4sv_ glVertexAttrib4sv
#define glVertexAttrib4bv_ glVertexAttrib4bv
#define glVertexAttrib4iv_ glVertexAttrib4iv
#define glVertexAttrib4ubv_ glVertexAttrib4ubv
#define glVertexAttrib4uiv_ glVertexAttrib4uiv
#define glVertexAttrib4usv_ glVertexAttrib4usv
#define glVertexAttrib4Nbv_ glVertexAttrib4Nbv
#define glVertexAttrib4Niv_ glVertexAttrib4Niv
#define glVertexAttrib4Nub_ glVertexAttrib4Nub
#define glVertexAttrib4Nubv_ glVertexAttrib4Nubv
#define glVertexAttrib4Nuiv_ glVertexAttrib4Nuiv
#define glVertexAttrib4Nusv_ glVertexAttrib4Nusv
#define glVertexAttribPointer_ glVertexAttribPointer
#define glUniformMatrix2x3fv_ glUniformMatrix2x3fv
@ -322,6 +350,7 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei co
#define glUniformMatrix3x4fv_ glUniformMatrix3x4fv
#define glUniformMatrix4x3fv_ glUniformMatrix4x3fv
#else
extern PFNGLCREATEPROGRAMPROC glCreateProgram_;
extern PFNGLDELETEPROGRAMPROC glDeleteProgram_;
extern PFNGLUSEPROGRAMPROC glUseProgram_;
@ -359,6 +388,34 @@ extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_;
extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform_;
extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray_;
extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray_;
extern PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_;
extern PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv_;
extern PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s_;
extern PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv_;
extern PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_;
extern PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv_;
extern PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s_;
extern PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv_;
extern PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_;
extern PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv_;
extern PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s_;
extern PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv_;
extern PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_;
extern PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv_;
extern PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s_;
extern PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv_;
extern PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv_;
extern PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv_;
extern PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv_;
extern PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv_;
extern PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv_;
extern PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv_;
extern PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv_;
extern PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub_;
extern PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv_;
extern PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv_;
extern PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv_;
extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer_;
extern PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv_;
@ -434,17 +491,16 @@ extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding_;
extern PFNGLBINDBUFFERBASEPROC glBindBufferBase_;
extern PFNGLBINDBUFFERRANGEPROC glBindBufferRange_;
#ifndef GL_EXT_bindable_uniform
#define GL_EXT_bindable_uniform 1
#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED
#define GL_UNIFORM_BUFFER_EXT 0x8DEE
#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF
typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
// GL_ARB_vertex_array_objext
#ifndef GL_ARB_vertex_array_object
#define GL_VERTEX_ARRAY_BINDING 0x85B5
typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
#endif
extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray_;
extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays_;
extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays_;
extern PFNGLISVERTEXARRAYPROC glIsVertexArray_;

View File

@ -2,7 +2,7 @@
#include "engine.h"
bool hasVBO = false, hasDRE = false, hasOQ = false, hasTR = false, hasT3D = false, hasFBO = false, hasAFBO = false, hasDS = false, hasTF = false, hasCBF = false, hasBE = false, hasBC = false, hasCM = false, hasNP2 = false, hasTC = false, hasS3TC = false, hasFXT1 = false, hasMT = false, hasAF = false, hasMDA = false, hasGLSL = false, hasDT = false, hasSH = false, hasPBO = false, hasFBB = false, hasFBMS = false, hasTMS = false, hasMSS = false, hasFBMSBS = false, hasNVFBMSC = false, hasNVTMS = false, hasUBO = false, hasMBR = false, hasDB = false, hasTG = false, hasT4 = false, hasTQ = false, hasPF = false, hasTRG = false, hasDBT = false, hasDC = false, hasDBGO = false, hasGPU4 = false, hasGPU5 = false;
bool hasVBO = false, hasVAO = false, hasDRE = false, hasOQ = false, hasTR = false, hasT3D = false, hasFBO = false, hasAFBO = false, hasDS = false, hasTF = false, hasCBF = false, hasBE = false, hasBC = false, hasCM = false, hasNP2 = false, hasTC = false, hasS3TC = false, hasFXT1 = false, hasMT = false, hasAF = false, hasMDA = false, hasGLSL = false, hasDT = false, hasSH = false, hasPBO = false, hasFBB = false, hasFBMS = false, hasTMS = false, hasMSS = false, hasFBMSBS = false, hasNVFBMSC = false, hasNVTMS = false, hasUBO = false, hasMBR = false, hasDB = false, hasTG = false, hasT4 = false, hasTQ = false, hasPF = false, hasTRG = false, hasDBT = false, hasDC = false, hasDBGO = false, hasGPU4 = false, hasGPU5 = false;
bool mesa = false, intel = false, ati = false, nvidia = false;
int hasstencil = 0;
@ -124,6 +124,34 @@ PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_ = NULL;
PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform_ = NULL;
PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray_ = NULL;
PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray_ = NULL;
PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_ = NULL;
PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv_ = NULL;
PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s_ = NULL;
PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv_ = NULL;
PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_ = NULL;
PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv_ = NULL;
PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s_ = NULL;
PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv_ = NULL;
PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_ = NULL;
PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv_ = NULL;
PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s_ = NULL;
PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv_ = NULL;
PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_ = NULL;
PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv_ = NULL;
PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s_ = NULL;
PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv_ = NULL;
PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv_ = NULL;
PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv_ = NULL;
PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv_ = NULL;
PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv_ = NULL;
PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv_ = NULL;
PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv_ = NULL;
PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv_ = NULL;
PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub_ = NULL;
PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv_ = NULL;
PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv_ = NULL;
PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv_ = NULL;
PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer_ = NULL;
PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv_ = NULL;
@ -172,20 +200,26 @@ PFNGLDEPTHBOUNDSEXTPROC glDepthBounds_ = NULL;
PFNGLCLAMPCOLORARBPROC glClampColor_ = NULL;
// GL_EXT_texture3D
PFNGLTEXIMAGE3DEXTPROC glTexImage3D_ = NULL;
PFNGLTEXSUBIMAGE3DEXTPROC glTexSubImage3D_ = NULL;
PFNGLTEXIMAGE3DEXTPROC glTexImage3D_ = NULL;
PFNGLTEXSUBIMAGE3DEXTPROC glTexSubImage3D_ = NULL;
PFNGLCOPYTEXSUBIMAGE3DEXTPROC glCopyTexSubImage3D_ = NULL;
// GL_ARB_debug_output
PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControl_ = NULL;
PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsert_ = NULL;
PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControl_ = NULL;
PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsert_ = NULL;
PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallback_ = NULL;
PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLog_ = NULL;
PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLog_ = NULL;
// GL_ARB_map_buffer_range
PFNGLMAPBUFFERRANGEPROC glMapBufferRange_ = NULL;
PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange_ = NULL;
// GL_ARB_vertex_array_object
PFNGLBINDVERTEXARRAYPROC glBindVertexArray_ = NULL;
PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays_ = NULL;
PFNGLGENVERTEXARRAYSPROC glGenVertexArrays_ = NULL;
PFNGLISVERTEXARRAYPROC glIsVertexArray_ = NULL;
void *getprocaddress(const char *name)
{
return SDL_GL_GetProcAddress(name);
@ -329,6 +363,25 @@ void gl_checkextensions()
glGetBufferSubData_ = (PFNGLGETBUFFERSUBDATAARBPROC)getprocaddress("glGetBufferSubDataARB");
}
if(hasext(exts, "GL_ARB_vertex_array_object"))
{
glBindVertexArray_ = (PFNGLBINDVERTEXARRAYPROC) getprocaddress("glBindVertexArray");
glDeleteVertexArrays_ = (PFNGLDELETEVERTEXARRAYSPROC)getprocaddress("glDeleteVertexArrays");
glGenVertexArrays_ = (PFNGLGENVERTEXARRAYSPROC) getprocaddress("glGenVertexArrays");
glIsVertexArray_ = (PFNGLISVERTEXARRAYPROC) getprocaddress("glIsVertexArray");
hasVAO = true;
if(dbgexts) conoutf(CON_INIT, "Using GL_ARB_vertex_array_object extension.");
}
else if(hasext(exts, "GL_APPLE_vertex_array_object"))
{
glBindVertexArray_ = (PFNGLBINDVERTEXARRAYPROC) getprocaddress("glBindVertexArrayAPPLE");
glDeleteVertexArrays_ = (PFNGLDELETEVERTEXARRAYSPROC)getprocaddress("glDeleteVertexArraysAPPLE");
glGenVertexArrays_ = (PFNGLGENVERTEXARRAYSPROC) getprocaddress("glGenVertexArraysAPPLE");
glIsVertexArray_ = (PFNGLISVERTEXARRAYPROC) getprocaddress("glIsVertexArrayAPPLE");
hasVAO = true;
if(dbgexts) conoutf(CON_INIT, "Using GL_APPLE_vertex_array_object extension.");
}
if(hasext(exts, "GL_EXT_draw_range_elements"))
{
glDrawRangeElements_ = (PFNGLDRAWRANGEELEMENTSEXTPROC)getprocaddress("glDrawRangeElementsEXT");
@ -571,6 +624,34 @@ void gl_checkextensions()
glGetActiveUniform_ = (PFNGLGETACTIVEUNIFORMPROC) getprocaddress("glGetActiveUniform");
glEnableVertexAttribArray_ = (PFNGLENABLEVERTEXATTRIBARRAYPROC) getprocaddress("glEnableVertexAttribArray");
glDisableVertexAttribArray_ = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) getprocaddress("glDisableVertexAttribArray");
glVertexAttrib1f_ = (PFNGLVERTEXATTRIB1FPROC) getprocaddress("glVertexAttrib1f");
glVertexAttrib1fv_ = (PFNGLVERTEXATTRIB1FVPROC) getprocaddress("glVertexAttrib1fv");
glVertexAttrib1s_ = (PFNGLVERTEXATTRIB1SPROC) getprocaddress("glVertexAttrib1s");
glVertexAttrib1sv_ = (PFNGLVERTEXATTRIB1SVPROC) getprocaddress("glVertexAttrib1sv");
glVertexAttrib2f_ = (PFNGLVERTEXATTRIB2FPROC) getprocaddress("glVertexAttrib2f");
glVertexAttrib2fv_ = (PFNGLVERTEXATTRIB2FVPROC) getprocaddress("glVertexAttrib2fv");
glVertexAttrib2s_ = (PFNGLVERTEXATTRIB2SPROC) getprocaddress("glVertexAttrib2s");
glVertexAttrib2sv_ = (PFNGLVERTEXATTRIB2SVPROC) getprocaddress("glVertexAttrib2sv");
glVertexAttrib3f_ = (PFNGLVERTEXATTRIB3FPROC) getprocaddress("glVertexAttrib3f");
glVertexAttrib3fv_ = (PFNGLVERTEXATTRIB3FVPROC) getprocaddress("glVertexAttrib3fv");
glVertexAttrib3s_ = (PFNGLVERTEXATTRIB3SPROC) getprocaddress("glVertexAttrib3s");
glVertexAttrib3sv_ = (PFNGLVERTEXATTRIB3SVPROC) getprocaddress("glVertexAttrib3sv");
glVertexAttrib4f_ = (PFNGLVERTEXATTRIB4FPROC) getprocaddress("glVertexAttrib4f");
glVertexAttrib4fv_ = (PFNGLVERTEXATTRIB4FVPROC) getprocaddress("glVertexAttrib4fv");
glVertexAttrib4s_ = (PFNGLVERTEXATTRIB4SPROC) getprocaddress("glVertexAttrib4s");
glVertexAttrib4sv_ = (PFNGLVERTEXATTRIB4SVPROC) getprocaddress("glVertexAttrib4sv");
glVertexAttrib4bv_ = (PFNGLVERTEXATTRIB4BVPROC) getprocaddress("glVertexAttrib4bv");
glVertexAttrib4iv_ = (PFNGLVERTEXATTRIB4IVPROC) getprocaddress("glVertexAttrib4iv");
glVertexAttrib4ubv_ = (PFNGLVERTEXATTRIB4UBVPROC) getprocaddress("glVertexAttrib4ubv");
glVertexAttrib4uiv_ = (PFNGLVERTEXATTRIB4UIVPROC) getprocaddress("glVertexAttrib4uiv");
glVertexAttrib4usv_ = (PFNGLVERTEXATTRIB4USVPROC) getprocaddress("glVertexAttrib4usv");
glVertexAttrib4Nbv_ = (PFNGLVERTEXATTRIB4NBVPROC) getprocaddress("glVertexAttrib4Nbv");
glVertexAttrib4Niv_ = (PFNGLVERTEXATTRIB4NIVPROC) getprocaddress("glVertexAttrib4Niv");
glVertexAttrib4Nub_ = (PFNGLVERTEXATTRIB4NUBPROC) getprocaddress("glVertexAttrib4Nub");
glVertexAttrib4Nubv_ = (PFNGLVERTEXATTRIB4NUBVPROC) getprocaddress("glVertexAttrib4Nubv");
glVertexAttrib4Nuiv_ = (PFNGLVERTEXATTRIB4NUIVPROC) getprocaddress("glVertexAttrib4Nuiv");
glVertexAttrib4Nusv_ = (PFNGLVERTEXATTRIB4NUSVPROC) getprocaddress("glVertexAttrib4Nusv");
glVertexAttribPointer_ = (PFNGLVERTEXATTRIBPOINTERPROC) getprocaddress("glVertexAttribPointer");
if(glversion >= 210)