Commit ae34762e authored by hybrid's avatar hybrid

Inlined the OpenGL access methods, also renamed some of them to make the names...

Inlined the OpenGL access methods, also renamed some of them to make the names more durable in case the official methods are promoted.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@691 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 7085da18
Changes in version 1.3.1 (?? Mar 2007)
- Moved the OpenGL API functions from COpenGL driver into new extension
handler. Thereby, some renaming took place - the ARB and EXT suffix was
removed. Simply rename the functions in case you use them.
- matrix4 is now a template internally such that also int and double matrices
are possible now.
- CMeshBuffer is a new template replacing all previous SMeshBuffer* classes.
New mesh buffers can be easily implemented based on this code.
- Ogre 1.40 files now also load.
- New filename based methods in the MeshCache.
- CSphereSceneNode is now texture wrapped with sphere mapping by exactly one
texture. Only a small error on the top remained.
- Frustum culling fixed by using the fixed classifyPointRelation function.
- Some fixes in the 3d basic structures: plane3d.classifyPointRelation now
correctly returns the relation, it returned the opposite before. Also
renamed existsInterSection to existsIntersection for consistency.
......@@ -10,6 +29,8 @@ Changes in version 1.3.1 (?? Mar 2007)
name. Submitted by Jeff Myers
- Updated to latest PNG library (1.2.18), fixing a vulnerability.
Also changed some data structures which should make the library 64bit
compatible.
- Changed the external window pointer from s32 to void*. This makes the
mechanism 64bit safe, but also breaks the API. You have to cast to
......
......@@ -450,7 +450,7 @@ void COpenGLDriver::setTransform(E_TRANSFORMATION_STATE state, const core::matri
return;
if (MultiTextureExtension)
extGlActiveTextureARB(GL_TEXTURE0_ARB + ( state - ETS_TEXTURE_0 ));
extGlActiveTexture(GL_TEXTURE0_ARB + ( state - ETS_TEXTURE_0 ));
glMatrixMode(GL_TEXTURE);
createGLTextureMatrix(glmat, mat );
......@@ -518,7 +518,7 @@ void COpenGLDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCoun
setRenderStates3DMode();
if (MultiTextureExtension)
extGlClientActiveTextureARB(GL_TEXTURE0_ARB);
extGlClientActiveTexture(GL_TEXTURE0_ARB);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
......@@ -541,10 +541,10 @@ void COpenGLDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCoun
// texture coordinates
if (MultiTextureExtension)
{
extGlClientActiveTextureARB(GL_TEXTURE1_ARB);
extGlClientActiveTexture(GL_TEXTURE1_ARB);
glEnableClientState ( GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertex2TCoords), &((S3DVertex2TCoords*)vertices)[0].TCoords2);
extGlClientActiveTextureARB(GL_TEXTURE0_ARB);
extGlClientActiveTexture(GL_TEXTURE0_ARB);
}
glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertex2TCoords), &((S3DVertex2TCoords*)vertices)[0].TCoords);
break;
......@@ -554,15 +554,15 @@ void COpenGLDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCoun
// texture coordinates
if (MultiTextureExtension)
{
extGlClientActiveTextureARB(GL_TEXTURE1_ARB);
extGlClientActiveTexture(GL_TEXTURE1_ARB);
glEnableClientState ( GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(3, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].Tangent);
extGlClientActiveTextureARB(GL_TEXTURE2_ARB);
extGlClientActiveTexture(GL_TEXTURE2_ARB);
glEnableClientState ( GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(3, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].Binormal);
extGlClientActiveTextureARB(GL_TEXTURE0_ARB);
extGlClientActiveTexture(GL_TEXTURE0_ARB);
}
glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].TCoords);
break;
......@@ -611,15 +611,15 @@ void COpenGLDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCoun
{
if (vType==EVT_TANGENTS)
{
extGlClientActiveTextureARB(GL_TEXTURE2_ARB);
extGlClientActiveTexture(GL_TEXTURE2_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
if (vType!=EVT_STANDARD && MultiTextureExtension)
{
extGlClientActiveTextureARB(GL_TEXTURE1_ARB);
extGlClientActiveTexture(GL_TEXTURE1_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
extGlClientActiveTextureARB(GL_TEXTURE0_ARB);
extGlClientActiveTexture(GL_TEXTURE0_ARB);
}
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
......@@ -1048,7 +1048,7 @@ bool COpenGLDriver::setTexture(s32 stage, video::ITexture* texture)
return true;
if (MultiTextureExtension)
extGlActiveTextureARB(GL_TEXTURE0_ARB + stage);
extGlActiveTexture(GL_TEXTURE0_ARB + stage);
CurrentTexture[stage]=texture;
......@@ -1283,7 +1283,7 @@ void COpenGLDriver::setBasicRenderStates(const SMaterial& material, const SMater
if (!material.Textures[i])
continue;
if (MultiTextureExtension)
extGlActiveTextureARB(GL_TEXTURE0_ARB + i);
extGlActiveTexture(GL_TEXTURE0_ARB + i);
else if (i>0)
break;
......@@ -1417,7 +1417,7 @@ void COpenGLDriver::setBasicRenderStates(const SMaterial& material, const SMater
}
if (MultiTextureExtension)
extGlActiveTextureARB(GL_TEXTURE0_ARB + u);
extGlActiveTexture(GL_TEXTURE0_ARB + u);
else if (u>0)
break;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, mode);
......@@ -1845,7 +1845,7 @@ void COpenGLDriver::setVertexShaderConstant(const f32* data, s32 startRegister,
{
#ifdef GL_ARB_vertex_program
for (int i=0; i<constantAmount; ++i)
extGlProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, startRegister+i, &data[i*4]);
extGlProgramLocalParameter4fv(GL_VERTEX_PROGRAM_ARB, startRegister+i, &data[i*4]);
#endif
}
......@@ -1854,7 +1854,7 @@ void COpenGLDriver::setPixelShaderConstant(const f32* data, s32 startRegister, s
{
#ifdef GL_ARB_fragment_program
for (int i=0; i<constantAmount; ++i)
extGlProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, startRegister+i, &data[i*4]);
extGlProgramLocalParameter4fv(GL_FRAGMENT_PROGRAM_ARB, startRegister+i, &data[i*4]);
#endif
}
......
......@@ -19,9 +19,9 @@ COpenGLExtensionHandler::COpenGLExtensionHandler() :
TextureCompressionExtension(false),
PackedDepthStencilExtension(false),
MaxTextureUnits(1), MaxLights(1), MaxIndices(1),
MaxAnisotropy(1),
MaxAnisotropy(1.0f), Version(0)
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
pGlActiveTextureARB(0), pGlClientActiveTextureARB(0),
,pGlActiveTextureARB(0), pGlClientActiveTextureARB(0),
pGlGenProgramsARB(0), pGlBindProgramARB(0), pGlProgramStringARB(0),
pGlDeleteProgramsARB(0), pGlProgramLocalParameter4fvARB(0),
pGlCreateShaderObjectARB(0), pGlShaderSourceARB(0),
......@@ -46,9 +46,9 @@ COpenGLExtensionHandler::COpenGLExtensionHandler() :
pGlRenderbufferStorageEXT(0), pGlFramebufferRenderbufferEXT(0)
#endif // _IRR_OPENGL_USE_EXTPOINTER_
{
for (u32 i=0; i<IRR_OpenGL_Feature_Count; ++i)
FeatureAvailable[i]=false;
}
for (u32 i=0; i<IRR_OpenGL_Feature_Count; ++i)
FeatureAvailable[i]=false;
}
void COpenGLExtensionHandler::dump() const
......@@ -59,7 +59,9 @@ void COpenGLExtensionHandler::dump() const
void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
{
if (atof((c8*)glGetString(GL_VERSION)) >= 1.2)
const f32 ver = atof((c8*)glGetString(GL_VERSION));
Version = core::floor32(ver)*100+(s32)(ver-floor(ver));
if ( Version >= 102)
os::Printer::log("OpenGL driver version is 1.2 or better.", ELL_INFORMATION);
else
os::Printer::log("OpenGL driver version is not 1.2 or better.", ELL_WARNING);
......@@ -355,7 +357,6 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
if (!pGlActiveTextureARB || !pGlClientActiveTextureARB)
{
MultiTextureExtension = false;
// ExtensionHandler.MultiTextureExtension = false;
os::Printer::log("Failed to load OpenGL's multitexture extension, proceeding without.", ELL_WARNING);
}
else
......@@ -363,7 +364,6 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
if (MaxTextureUnits < 2)
{
MultiTextureExtension = false;
// ExtensionHandler.MultiTextureExtension = false;
os::Printer::log("Warning: OpenGL device only has one texture unit. Disabling multitexturing.", ELL_WARNING);
}
MaxTextureUnits = core::min_((u32)MaxTextureUnits,MATERIAL_MAX_TEXTURES);
......@@ -402,504 +402,9 @@ bool COpenGLExtensionHandler::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
};
}
void COpenGLExtensionHandler::extGlActiveTextureARB(GLenum texture)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (MultiTextureExtension && pGlActiveTextureARB)
// if (ExtensionHandler.MultiTextureExtension && pGlActiveTextureARB)
pGlActiveTextureARB(texture);
#else
if (MultiTextureExtension) glActiveTextureARB(texture);
// if (ExtensionHandler.MultiTextureExtension) glActiveTextureARB(texture);
#endif
}
void COpenGLExtensionHandler::extGlClientActiveTextureARB(GLenum texture)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (MultiTextureExtension && pGlClientActiveTextureARB)
// if (ExtensionHandler.MultiTextureExtension && pGlClientActiveTextureARB)
pGlClientActiveTextureARB(texture);
#else
if (MultiTextureExtension) glClientActiveTextureARB(texture);
// if (ExtensionHandler.MultiTextureExtension) glClientActiveTextureARB(texture);
#endif
}
void COpenGLExtensionHandler::extGlGenProgramsARB(GLsizei n, GLuint *programs)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenProgramsARB)
pGlGenProgramsARB(n, programs);
#elif defined(GL_ARB_vertex_program)
glGenProgramsARB(n,programs);
#else
os::Printer::log("glGenProgramsARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlBindProgramARB(GLenum target, GLuint program)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindProgramARB)
pGlBindProgramARB(target, program);
#elif defined(GL_ARB_vertex_program)
glBindProgramARB(target, program);
#else
os::Printer::log("glBindProgramARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlProgramStringARB)
pGlProgramStringARB(target, format, len, string);
#elif defined(GL_ARB_vertex_program)
glProgramStringARB(target,format,len,string);
#else
os::Printer::log("glProgramStringARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlDeleteProgramsARB(GLsizei n, const GLuint *programs)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteProgramsARB)
pGlDeleteProgramsARB(n, programs);
#elif defined(GL_ARB_vertex_program)
glDeleteProgramsARB(n,programs);
#else
os::Printer::log("glDeleteProgramsARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlProgramLocalParameter4fvARB(GLenum n, GLuint i, const GLfloat * f)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlProgramLocalParameter4fvARB)
pGlProgramLocalParameter4fvARB(n,i,f);
#elif defined(GL_ARB_vertex_program)
glProgramLocalParameter4fvARB(n,i,f);
#else
os::Printer::log("glProgramLocalParameter4fvARB not supported", ELL_ERROR);
#endif
}
GLhandleARB COpenGLExtensionHandler::extGlCreateShaderObjectARB(GLenum shaderType)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCreateShaderObjectARB)
return pGlCreateShaderObjectARB(shaderType);
#elif defined(GL_ARB_shader_objects)
return glCreateShaderObjectARB(shaderType);
#else
os::Printer::log("glCreateShaderObjectARB not supported", ELL_ERROR);
#endif
return 0;
}
void COpenGLExtensionHandler::extGlShaderSourceARB(GLhandleARB shader, int numOfStrings, const char **strings, int *lenOfStrings)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlShaderSourceARB)
pGlShaderSourceARB(shader, numOfStrings, strings, lenOfStrings);
#elif defined(GL_ARB_shader_objects)
glShaderSourceARB(shader, numOfStrings, strings, (GLint *)lenOfStrings);
#else
os::Printer::log("glShaderSourceARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlCompileShaderARB(GLhandleARB shader)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCompileShaderARB)
pGlCompileShaderARB(shader);
#elif defined(GL_ARB_shader_objects)
glCompileShaderARB(shader);
#else
os::Printer::log("glCompileShaderARB not supported", ELL_ERROR);
#endif
}
GLhandleARB COpenGLExtensionHandler::extGlCreateProgramObjectARB(void)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCreateProgramObjectARB)
return pGlCreateProgramObjectARB();
#elif defined(GL_ARB_shader_objects)
return glCreateProgramObjectARB();
#else
os::Printer::log("glCreateProgramObjectARB not supported", ELL_ERROR);
#endif
return 0;
}
void COpenGLExtensionHandler::extGlAttachObjectARB(GLhandleARB program, GLhandleARB shader)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlAttachObjectARB)
pGlAttachObjectARB(program, shader);
#elif defined(GL_ARB_shader_objects)
glAttachObjectARB(program, shader);
#else
os::Printer::log("glAttachObjectARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlLinkProgramARB(GLhandleARB program)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlLinkProgramARB)
pGlLinkProgramARB(program);
#elif defined(GL_ARB_shader_objects)
glLinkProgramARB(program);
#else
os::Printer::log("glLinkProgramARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUseProgramObjectARB(GLhandleARB prog)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUseProgramObjectARB)
pGlUseProgramObjectARB(prog);
#elif defined(GL_ARB_shader_objects)
glUseProgramObjectARB(prog);
#else
os::Printer::log("glUseProgramObjectARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlDeleteObjectARB(GLhandleARB object)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteObjectARB)
pGlDeleteObjectARB(object);
#elif defined(GL_ARB_shader_objects)
glDeleteObjectARB(object);
#else
os::Printer::log("gldeleteObjectARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlGetInfoLogARB(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetInfoLogARB)
pGlGetInfoLogARB(object, maxLength, length, infoLog);
#elif defined(GL_ARB_shader_objects)
glGetInfoLogARB(object, maxLength, length, infoLog);
#else
os::Printer::log("glGetInfoLogARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlGetObjectParameterivARB(GLhandleARB object, GLenum type, int *param)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetObjectParameterivARB)
pGlGetObjectParameterivARB(object, type, param);
#elif defined(GL_ARB_shader_objects)
glGetObjectParameterivARB(object, type, (GLint *)param);
#else
os::Printer::log("glGetObjectParameterivARB not supported", ELL_ERROR);
#endif
}
GLint COpenGLExtensionHandler::extGlGetUniformLocationARB(GLhandleARB program, const char *name)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetUniformLocationARB)
return pGlGetUniformLocationARB(program, name);
#elif defined(GL_ARB_shader_objects)
return glGetUniformLocationARB(program, name);
#else
os::Printer::log("glGetUniformLocationARB not supported", ELL_ERROR);
#endif
return 0;
}
void COpenGLExtensionHandler::extGlUniform4fvARB(GLint location, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform4fvARB)
pGlUniform4fvARB(location, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform4fvARB(location, count, v);
#else
os::Printer::log("glUniform4fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniform1ivARB (GLint loc, GLsizei count, const GLint *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform1ivARB)
pGlUniform1ivARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform1ivARB(loc, count, v);
#else
os::Printer::log("glUniform1ivARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniform1fvARB (GLint loc, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform1fvARB)
pGlUniform1fvARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform1fvARB(loc, count, v);
#else
os::Printer::log("glUniform1fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniform2fvARB (GLint loc, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform2fvARB)
pGlUniform2fvARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform2fvARB(loc, count, v);
#else
os::Printer::log("glUniform2fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniform3fvARB (GLint loc, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform3fvARB)
pGlUniform3fvARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform3fvARB(loc, count, v);
#else
os::Printer::log("glUniform3fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniformMatrix2fvARB (GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniformMatrix2fvARB)
pGlUniformMatrix2fvARB(loc, count, transpose, v);
#elif defined(GL_ARB_shader_objects)
glUniformMatrix2fvARB(loc, count, transpose, v);
#else
os::Printer::log("glUniformMatrix2fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniformMatrix3fvARB (GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniformMatrix3fvARB)
pGlUniformMatrix3fvARB(loc, count, transpose, v);
#elif defined(GL_ARB_shader_objects)
glUniformMatrix3fvARB(loc, count, transpose, v);
#else
os::Printer::log("glUniformMatrix3fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlUniformMatrix4fvARB (GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniformMatrix4fvARB)
pGlUniformMatrix4fvARB(loc, count, transpose, v);
#elif defined(GL_ARB_shader_objects)
glUniformMatrix4fvARB(loc, count, transpose, v);
#else
os::Printer::log("glUniformMatrix4fvARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlGetActiveUniformARB (GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetActiveUniformARB)
pGlGetActiveUniformARB(program, index, maxlength, length, size, type, name);
#elif defined(GL_ARB_shader_objects)
glGetActiveUniformARB(program, index, maxlength, length, size, type, name);
#else
os::Printer::log("glGetActiveUniformARB not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlPointParameterfARB (GLint loc, GLfloat f)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlPointParameterfARB)
pGlPointParameterfARB(loc, f);
#else
glPointParameterfARB(loc, f);
#endif
}
void COpenGLExtensionHandler::extGlPointParameterfvARB (GLint loc, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlPointParameterfvARB)
pGlPointParameterfvARB(loc, v);
#else
glPointParameterfvARB(loc, v);
#endif
}
void COpenGLExtensionHandler::extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlStencilFuncSeparate)
pGlStencilFuncSeparate(frontfunc, backfunc, ref, mask);
else if (pGlStencilFuncSeparateATI)
pGlStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);
#elif defined(GL_VERSION_2_0)
glStencilFuncSeparate(frontfunc, backfunc, ref, mask);
#elif defined(GL_ATI_separate_stencil)
glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);
#else
os::Printer::log("glStencilFuncSeparate not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlStencilOpSeparate)
pGlStencilOpSeparate(face, fail, zfail, zpass);
else if (pGlStencilOpSeparateATI)
pGlStencilOpSeparateATI(face, fail, zfail, zpass);
#elif defined(GL_VERSION_2_0)
glStencilOpSeparate(face, fail, zfail, zpass);
#elif defined(GL_ATI_separate_stencil)
glStencilOpSeparateATI(face, fail, zfail, zpass);
#else
os::Printer::log("glStencilOpSeparate not supported", ELL_ERROR);
#endif
}
void COpenGLExtensionHandler::extGlCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei imageSize, const void* data)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
#ifdef PFNGLCOMPRESSEDTEXIMAGE2DPROC
if (pGlCompressedTexImage2D)
pGlCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
#endif
#else
glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
#endif
}
void COpenGLExtensionHandler::extGlBindFramebufferEXT (GLenum target, GLuint framebuffer)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindFramebufferEXT)
pGlBindFramebufferEXT(target, framebuffer);
#elif defined(GL_EXT_framebuffer_object)
glBindFramebufferEXT(target, framebuffer);
#endif
}
void COpenGLExtensionHandler::extGlDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteFramebuffersEXT)
pGlDeleteFramebuffersEXT(n, framebuffers);
#elif defined(GL_EXT_framebuffer_object)
glDeleteFramebuffersEXT(n, framebuffers);
#endif
}
void COpenGLExtensionHandler::extGlGenFramebuffersEXT (GLsizei n, GLuint *framebuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenFramebuffersEXT)
pGlGenFramebuffersEXT(n, framebuffers);
#elif defined(GL_EXT_framebuffer_object)
glGenFramebuffersEXT(n, framebuffers);
#endif
}
GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatusEXT (GLenum target)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCheckFramebufferStatusEXT)
return pGlCheckFramebufferStatusEXT(target);
else
return 0;
#elif defined(GL_EXT_framebuffer_object)
return glCheckFramebufferStatusEXT(target);
#else
return 0;
#endif
}
void COpenGLExtensionHandler::extGlFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlFramebufferTexture2DEXT)
pGlFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
#elif defined(GL_EXT_framebuffer_object)
glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
#endif
}
void COpenGLExtensionHandler::extGlBindRenderbufferEXT (GLenum target, GLuint renderbuffer)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindRenderbufferEXT)
pGlBindRenderbufferEXT(target, renderbuffer);
#elif defined(GL_EXT_framebuffer_object)
glBindRenderbufferEXT(target, renderbuffer);
#endif
}
void COpenGLExtensionHandler::extGlDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteRenderbuffersEXT)
pGlDeleteRenderbuffersEXT(n, renderbuffers);
#elif defined(GL_EXT_framebuffer_object)
glDeleteRenderbuffersEXT(n, renderbuffers);
#endif
}
void COpenGLExtensionHandler::extGlGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenRenderbuffersEXT)
pGlGenRenderbuffersEXT(n, renderbuffers);
#elif defined(GL_EXT_framebuffer_object)
glGenRenderbuffersEXT(n, renderbuffers);
#endif
}
void COpenGLExtensionHandler::extGlRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlRenderbufferStorageEXT)
pGlRenderbufferStorageEXT(target, internalformat, width, height);
#elif defined(GL_EXT_framebuffer_object)
glRenderbufferStorageEXT(target, internalformat, width, height);
#endif
}
void COpenGLExtensionHandler::extGlFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlFramebufferRenderbufferEXT)
pGlFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
#elif defined(GL_EXT_framebuffer_object)
glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
#endif
}
}
}
#endif
......@@ -645,11 +645,11 @@ class COpenGLExtensionHandler
};
public:
// constructor
COpenGLExtensionHandler();
// constructor
COpenGLExtensionHandler();
// deferred initialization
void initExtensions(bool stencilBuffer);
// deferred initialization
void initExtensions(bool stencilBuffer);
//! queries the features of the driver, returns true if feature is available
bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const;
......@@ -657,57 +657,6 @@ class COpenGLExtensionHandler
// show all features with availablity
void dump() const;
// public access to the (loaded) extensions.
// general functions
void extGlActiveTextureARB(GLenum texture);
void extGlClientActiveTextureARB(GLenum texture);
void extGlPointParameterfARB (GLint loc, GLfloat f);
void extGlPointParameterfvARB (GLint loc, const GLfloat *v);
void extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
void extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
void extGlCompressedTexImage2D(GLenum target, GLint level,
GLenum internalformat, GLsizei width, GLsizei height,
GLint border, GLsizei imageSize, const void* data);
// shader programming
void extGlGenProgramsARB(GLsizei n, GLuint *programs);
void extGlBindProgramARB(GLenum target, GLuint program);
void extGlProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string);
void extGlDeleteProgramsARB(GLsizei n, const GLuint *programs);
void extGlProgramLocalParameter4fvARB(GLenum, GLuint, const GLfloat *);
GLhandleARB extGlCreateShaderObjectARB(GLenum shaderType);
void extGlShaderSourceARB(GLhandleARB shader, int numOfStrings, const char **strings, int *lenOfStrings);
void extGlCompileShaderARB(GLhandleARB shader);
GLhandleARB extGlCreateProgramObjectARB(void);
void extGlAttachObjectARB(GLhandleARB program, GLhandleARB shader);
void extGlLinkProgramARB(GLhandleARB program);
void extGlUseProgramObjectARB(GLhandleARB prog);
void extGlDeleteObjectARB(GLhandleARB object);
void extGlGetInfoLogARB(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
void extGlGetObjectParameterivARB(GLhandleARB object, GLenum type, int *param);
GLint extGlGetUniformLocationARB(GLhandleARB program, const char *name);
void extGlUniform4fvARB(GLint location, GLsizei count, const GLfloat *v);
void extGlUniform1ivARB (GLint loc, GLsizei count, const GLint *v);
void extGlUniform1fvARB (GLint loc, GLsizei count, const GLfloat *v);
void extGlUniform2fvARB (GLint loc, GLsizei count, const GLfloat *v);
void extGlUniform3fvARB (GLint loc, GLsizei count, const GLfloat *v);
void extGlUniformMatrix2fvARB (GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
void extGlUniformMatrix3fvARB (GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
void extGlUniformMatrix4fvARB (GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
void extGlGetActiveUniformARB (GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
// framebuffer objects
void extGlBindFramebufferEXT (GLenum target, GLuint framebuffer);
void extGlDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
void extGlGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
GLenum extGlCheckFramebufferStatusEXT (GLenum target);
void extGlFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void extGlBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
void extGlDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
void extGlGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
void extGlRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void extGlFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
// Some variables for properties
bool StencilBuffer;
bool MultiTextureExtension;
......@@ -723,6 +672,58 @@ class COpenGLExtensionHandler
GLint MaxLights;
GLint MaxIndices;
f32 MaxAnisotropy;
u32 Version;
// public access to the (loaded) extensions.
// general functions
void extGlActiveTexture(GLenum texture);
void extGlClientActiveTexture(GLenum texture);
void extGlPointParameterf(GLint loc, GLfloat f);
void extGlPointParameterfv(GLint loc, const GLfloat *v);
void extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
void extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
void extGlCompressedTexImage2D(GLenum target, GLint level,
GLenum internalformat, GLsizei width, GLsizei height,
GLint border, GLsizei imageSize, const void* data);
// shader programming
void extGlGenPrograms(GLsizei n, GLuint *programs);
void extGlBindProgram(GLenum target, GLuint program);
void extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string);
void extGlDeletePrograms(GLsizei n, const GLuint *programs);
void extGlProgramLocalParameter4fv(GLenum, GLuint, const GLfloat *);
GLhandleARB extGlCreateShaderObject(GLenum shaderType);
void extGlShaderSource(GLhandleARB shader, int numOfStrings, const char **strings, int *lenOfStrings);
void extGlCompileShader(GLhandleARB shader);
GLhandleARB extGlCreateProgramObject(void);
void extGlAttachObject(GLhandleARB program, GLhandleARB shader);
void extGlLinkProgram(GLhandleARB program);
void extGlUseProgramObject(GLhandleARB prog);
void extGlDeleteObject(GLhandleARB object);
void extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
void extGlGetObjectParameteriv(GLhandleARB object, GLenum type, int *param);
GLint extGlGetUniformLocation(GLhandleARB program, const char *name);
void extGlUniform4fv(GLint location, GLsizei count, const GLfloat *v);
void extGlUniform1iv(GLint loc, GLsizei count, const GLint *v);
void extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v);
void extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v);
void extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v);
void extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
void extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
void extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v);
void extGlGetActiveUniform(GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
// framebuffer objects
void extGlBindFramebuffer(GLenum target, GLuint framebuffer);
void extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers);
void extGlGenFramebuffers(GLsizei n, GLuint *framebuffers);
GLenum extGlCheckFramebufferStatus(GLenum target);
void extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void extGlBindRenderbuffer(GLenum target, GLuint renderbuffer);
void extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers);
void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers);
void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
protected:
// the global feature array
......@@ -786,6 +787,524 @@ class COpenGLExtensionHandler
#endif
};
inline void COpenGLExtensionHandler::extGlActiveTexture(GLenum texture)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (MultiTextureExtension && pGlActiveTextureARB)
pGlActiveTextureARB(texture);
#else
if (MultiTextureExtension) glActiveTextureARB(texture);
#endif
}
inline void COpenGLExtensionHandler::extGlClientActiveTexture(GLenum texture)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (MultiTextureExtension && pGlClientActiveTextureARB)
pGlClientActiveTextureARB(texture);
#else
if (MultiTextureExtension) glClientActiveTextureARB(texture);
#endif
}
inline void COpenGLExtensionHandler::extGlGenPrograms(GLsizei n, GLuint *programs)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenProgramsARB)
pGlGenProgramsARB(n, programs);
#elif defined(GL_ARB_vertex_program)
glGenProgramsARB(n,programs);
#else
os::Printer::log("glGenPrograms not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlBindProgram(GLenum target, GLuint program)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindProgramARB)
pGlBindProgramARB(target, program);
#elif defined(GL_ARB_vertex_program)
glBindProgramARB(target, program);
#else
os::Printer::log("glBindProgram not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlProgramString(GLenum target, GLenum format, GLsizei len, const GLvoid *string)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlProgramStringARB)
pGlProgramStringARB(target, format, len, string);
#elif defined(GL_ARB_vertex_program)
glProgramStringARB(target,format,len,string);
#else
os::Printer::log("glProgramString not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlDeletePrograms(GLsizei n, const GLuint *programs)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteProgramsARB)
pGlDeleteProgramsARB(n, programs);
#elif defined(GL_ARB_vertex_program)
glDeleteProgramsARB(n,programs);
#else
os::Printer::log("glDeletePrograms not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlProgramLocalParameter4fv(GLenum n, GLuint i, const GLfloat * f)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlProgramLocalParameter4fvARB)
pGlProgramLocalParameter4fvARB(n,i,f);
#elif defined(GL_ARB_vertex_program)
glProgramLocalParameter4fvARB(n,i,f);
#else
os::Printer::log("glProgramLocalParameter4fv not supported", ELL_ERROR);
#endif
}
inline GLhandleARB COpenGLExtensionHandler::extGlCreateShaderObject(GLenum shaderType)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCreateShaderObjectARB)
return pGlCreateShaderObjectARB(shaderType);
#elif defined(GL_ARB_shader_objects)
return glCreateShaderObjectARB(shaderType);
#else
os::Printer::log("glCreateShaderObject not supported", ELL_ERROR);
#endif
return 0;
}
inline void COpenGLExtensionHandler::extGlShaderSource(GLhandleARB shader, int numOfStrings, const char **strings, int *lenOfStrings)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlShaderSourceARB)
pGlShaderSourceARB(shader, numOfStrings, strings, lenOfStrings);
#elif defined(GL_ARB_shader_objects)
glShaderSourceARB(shader, numOfStrings, strings, (GLint *)lenOfStrings);
#else
os::Printer::log("glShaderSource not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlCompileShader(GLhandleARB shader)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCompileShaderARB)
pGlCompileShaderARB(shader);
#elif defined(GL_ARB_shader_objects)
glCompileShaderARB(shader);
#else
os::Printer::log("glCompileShader not supported", ELL_ERROR);
#endif
}
inline GLhandleARB COpenGLExtensionHandler::extGlCreateProgramObject(void)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCreateProgramObjectARB)
return pGlCreateProgramObjectARB();
#elif defined(GL_ARB_shader_objects)
return glCreateProgramObjectARB();
#else
os::Printer::log("glCreateProgramObject not supported", ELL_ERROR);
#endif
return 0;
}
inline void COpenGLExtensionHandler::extGlAttachObject(GLhandleARB program, GLhandleARB shader)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlAttachObjectARB)
pGlAttachObjectARB(program, shader);
#elif defined(GL_ARB_shader_objects)
glAttachObjectARB(program, shader);
#else
os::Printer::log("glAttachObject not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlLinkProgram(GLhandleARB program)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlLinkProgramARB)
pGlLinkProgramARB(program);
#elif defined(GL_ARB_shader_objects)
glLinkProgramARB(program);
#else
os::Printer::log("glLinkProgram not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUseProgramObject(GLhandleARB prog)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUseProgramObjectARB)
pGlUseProgramObjectARB(prog);
#elif defined(GL_ARB_shader_objects)
glUseProgramObjectARB(prog);
#else
os::Printer::log("glUseProgramObject not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlDeleteObject(GLhandleARB object)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteObjectARB)
pGlDeleteObjectARB(object);
#elif defined(GL_ARB_shader_objects)
glDeleteObjectARB(object);
#else
os::Printer::log("gldeleteObject not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlGetInfoLog(GLhandleARB object, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetInfoLogARB)
pGlGetInfoLogARB(object, maxLength, length, infoLog);
#elif defined(GL_ARB_shader_objects)
glGetInfoLogARB(object, maxLength, length, infoLog);
#else
os::Printer::log("glGetInfoLog not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlGetObjectParameteriv(GLhandleARB object, GLenum type, int *param)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetObjectParameterivARB)
pGlGetObjectParameterivARB(object, type, param);
#elif defined(GL_ARB_shader_objects)
glGetObjectParameterivARB(object, type, (GLint *)param);
#else
os::Printer::log("glGetObjectParameteriv not supported", ELL_ERROR);
#endif
}
inline GLint COpenGLExtensionHandler::extGlGetUniformLocation(GLhandleARB program, const char *name)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetUniformLocationARB)
return pGlGetUniformLocationARB(program, name);
#elif defined(GL_ARB_shader_objects)
return glGetUniformLocationARB(program, name);
#else
os::Printer::log("glGetUniformLocation not supported", ELL_ERROR);
#endif
return 0;
}
inline void COpenGLExtensionHandler::extGlUniform4fv(GLint location, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform4fvARB)
pGlUniform4fvARB(location, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform4fvARB(location, count, v);
#else
os::Printer::log("glUniform4fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniform1iv(GLint loc, GLsizei count, const GLint *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform1ivARB)
pGlUniform1ivARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform1ivARB(loc, count, v);
#else
os::Printer::log("glUniform1iv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniform1fv(GLint loc, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform1fvARB)
pGlUniform1fvARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform1fvARB(loc, count, v);
#else
os::Printer::log("glUniform1fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniform2fv(GLint loc, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform2fvARB)
pGlUniform2fvARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform2fvARB(loc, count, v);
#else
os::Printer::log("glUniform2fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniform3fv(GLint loc, GLsizei count, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniform3fvARB)
pGlUniform3fvARB(loc, count, v);
#elif defined(GL_ARB_shader_objects)
glUniform3fvARB(loc, count, v);
#else
os::Printer::log("glUniform3fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniformMatrix2fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniformMatrix2fvARB)
pGlUniformMatrix2fvARB(loc, count, transpose, v);
#elif defined(GL_ARB_shader_objects)
glUniformMatrix2fvARB(loc, count, transpose, v);
#else
os::Printer::log("glUniformMatrix2fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniformMatrix3fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniformMatrix3fvARB)
pGlUniformMatrix3fvARB(loc, count, transpose, v);
#elif defined(GL_ARB_shader_objects)
glUniformMatrix3fvARB(loc, count, transpose, v);
#else
os::Printer::log("glUniformMatrix3fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlUniformMatrix4fv(GLint loc, GLsizei count, GLboolean transpose, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlUniformMatrix4fvARB)
pGlUniformMatrix4fvARB(loc, count, transpose, v);
#elif defined(GL_ARB_shader_objects)
glUniformMatrix4fvARB(loc, count, transpose, v);
#else
os::Printer::log("glUniformMatrix4fv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlGetActiveUniform(GLhandleARB program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGetActiveUniformARB)
pGlGetActiveUniformARB(program, index, maxlength, length, size, type, name);
#elif defined(GL_ARB_shader_objects)
glGetActiveUniformARB(program, index, maxlength, length, size, type, name);
#else
os::Printer::log("glGetActiveUniform not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlPointParameterf(GLint loc, GLfloat f)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlPointParameterfARB)
pGlPointParameterfARB(loc, f);
#elif defined(GL_ARB_point_parameters)
glPointParameterfARB(loc, f);
#else
os::Printer::log("glPointParameterf not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlPointParameterfv(GLint loc, const GLfloat *v)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlPointParameterfvARB)
pGlPointParameterfvARB(loc, v);
#elif defined(GL_ARB_point_parameters)
glPointParameterfvARB(loc, v);
#else
os::Printer::log("glPointParameterfv not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlStencilFuncSeparate)
pGlStencilFuncSeparate(frontfunc, backfunc, ref, mask);
else if (pGlStencilFuncSeparateATI)
pGlStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);
#elif defined(GL_VERSION_2_0)
glStencilFuncSeparate(frontfunc, backfunc, ref, mask);
#elif defined(GL_ATI_separate_stencil)
glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);
#else
os::Printer::log("glStencilFuncSeparate not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlStencilOpSeparate)
pGlStencilOpSeparate(face, fail, zfail, zpass);
else if (pGlStencilOpSeparateATI)
pGlStencilOpSeparateATI(face, fail, zfail, zpass);
#elif defined(GL_VERSION_2_0)
glStencilOpSeparate(face, fail, zfail, zpass);
#elif defined(GL_ATI_separate_stencil)
glStencilOpSeparateATI(face, fail, zfail, zpass);
#else
os::Printer::log("glStencilOpSeparate not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei imageSize, const void* data)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
#ifdef PFNGLCOMPRESSEDTEXIMAGE2DPROC
if (pGlCompressedTexImage2D)
pGlCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
#endif
#elif defined(GL_ARB_texture_compression)
glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
#else
os::Printer::log("glCompressedTexImage2D not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint framebuffer)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindFramebufferEXT)
pGlBindFramebufferEXT(target, framebuffer);
#elif defined(GL_EXT_framebuffer_object)
glBindFramebufferEXT(target, framebuffer);
#else
os::Printer::log("glBindFramebuffer not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteFramebuffersEXT)
pGlDeleteFramebuffersEXT(n, framebuffers);
#elif defined(GL_EXT_framebuffer_object)
glDeleteFramebuffersEXT(n, framebuffers);
#else
os::Printer::log("glDeleteFramebuffers not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *framebuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenFramebuffersEXT)
pGlGenFramebuffersEXT(n, framebuffers);
#elif defined(GL_EXT_framebuffer_object)
glGenFramebuffersEXT(n, framebuffers);
#else
os::Printer::log("glGenFramebuffers not supported", ELL_ERROR);
#endif
}
inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCheckFramebufferStatusEXT)
return pGlCheckFramebufferStatusEXT(target);
else
return 0;
#elif defined(GL_EXT_framebuffer_object)
return glCheckFramebufferStatusEXT(target);
#else
os::Printer::log("glCheckFramebufferStatus not supported", ELL_ERROR);
return 0;
#endif
}
inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlFramebufferTexture2DEXT)
pGlFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
#elif defined(GL_EXT_framebuffer_object)
glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
#else
os::Printer::log("glFramebufferTexture2D not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint renderbuffer)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindRenderbufferEXT)
pGlBindRenderbufferEXT(target, renderbuffer);
#elif defined(GL_EXT_framebuffer_object)
glBindRenderbufferEXT(target, renderbuffer);
#else
os::Printer::log("glBindRenderbuffer not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteRenderbuffersEXT)
pGlDeleteRenderbuffersEXT(n, renderbuffers);
#elif defined(GL_EXT_framebuffer_object)
glDeleteRenderbuffersEXT(n, renderbuffers);
#else
os::Printer::log("glDeleteRenderbuffers not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenRenderbuffersEXT)
pGlGenRenderbuffersEXT(n, renderbuffers);
#elif defined(GL_EXT_framebuffer_object)
glGenRenderbuffersEXT(n, renderbuffers);
#else
os::Printer::log("glGenRenderbuffers not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlRenderbufferStorageEXT)
pGlRenderbufferStorageEXT(target, internalformat, width, height);
#elif defined(GL_EXT_framebuffer_object)
glRenderbufferStorageEXT(target, internalformat, width, height);
#else
os::Printer::log("glRenderbufferStorage not supported", ELL_ERROR);
#endif
}
inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlFramebufferRenderbufferEXT)
pGlFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
#elif defined(GL_EXT_framebuffer_object)
glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
#else
os::Printer::log("glFramebufferRenderbuffer not supported", ELL_ERROR);
#endif
}
}
}
......
......@@ -169,10 +169,10 @@ public:
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
{
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
Driver->extGlActiveTextureARB(GL_TEXTURE0_ARB);
Driver->extGlActiveTexture(GL_TEXTURE0_ARB);
}
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
......@@ -417,7 +417,7 @@ public:
{
// lightmap
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
if (material.MaterialType == EMT_LIGHTMAP_ADD)
......@@ -457,7 +457,7 @@ public:
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
{
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 1.f );
}
}
......@@ -495,7 +495,7 @@ public:
{
// detailmap
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_ADD_SIGNED_EXT);
......@@ -531,10 +531,10 @@ public:
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
{
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
Driver->extGlActiveTextureARB(GL_TEXTURE0_ARB);
Driver->extGlActiveTexture(GL_TEXTURE0_ARB);
}
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
......@@ -552,7 +552,7 @@ public:
virtual void OnUnsetMaterial()
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
Driver->extGlActiveTextureARB(GL_TEXTURE0_ARB);
Driver->extGlActiveTexture(GL_TEXTURE0_ARB);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
}
......@@ -587,7 +587,7 @@ public:
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE );
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PRIMARY_COLOR_EXT );
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
......@@ -618,10 +618,10 @@ public:
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
{
Driver->extGlActiveTextureARB(GL_TEXTURE0_ARB);
Driver->extGlActiveTexture(GL_TEXTURE0_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); // default value
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
}
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glDisable(GL_TEXTURE_GEN_S);
......@@ -651,14 +651,14 @@ public:
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
{
Driver->extGlActiveTextureARB(GL_TEXTURE0_ARB);
Driver->extGlActiveTexture(GL_TEXTURE0_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE);
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE );
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PRIMARY_COLOR_EXT );
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
......@@ -686,7 +686,7 @@ public:
virtual void OnUnsetMaterial()
{
if (Driver->queryFeature(EVDF_MULTITEXTURE))
Driver->extGlActiveTextureARB(GL_TEXTURE1_ARB);
Driver->extGlActiveTexture(GL_TEXTURE1_ARB);
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
......
......@@ -82,7 +82,7 @@ COpenGLSLMaterialRenderer::~COpenGLSLMaterialRenderer()
if(Program)
{
Driver->extGlDeleteObjectARB(Program);
Driver->extGlDeleteObject(Program);
Program = 0;
}
......@@ -142,7 +142,7 @@ void COpenGLSLMaterialRenderer::OnSetMaterial(video::SMaterial& material,
if (material.MaterialType != lastMaterial.MaterialType || resetAllRenderstates)
{
if(Program)
Driver->extGlUseProgramObjectARB(Program);
Driver->extGlUseProgramObject(Program);
if (BaseMaterial)
BaseMaterial->OnSetMaterial(material, material, true, this);
......@@ -154,7 +154,7 @@ void COpenGLSLMaterialRenderer::OnSetMaterial(video::SMaterial& material,
void COpenGLSLMaterialRenderer::OnUnsetMaterial()
{
Driver->extGlUseProgramObjectARB(0);
Driver->extGlUseProgramObject(0);
if (BaseMaterial)
BaseMaterial->OnUnsetMaterial();
......@@ -168,21 +168,21 @@ bool COpenGLSLMaterialRenderer::isTransparent()
bool COpenGLSLMaterialRenderer::createProgram()
{
Program = Driver->extGlCreateProgramObjectARB();
Program = Driver->extGlCreateProgramObject();
return true;
}
bool COpenGLSLMaterialRenderer::createShader(GLenum shaderType, const char* shader)
{
GLhandleARB shaderHandle = Driver->extGlCreateShaderObjectARB(shaderType);
GLhandleARB shaderHandle = Driver->extGlCreateShaderObject(shaderType);
Driver->extGlShaderSourceARB(shaderHandle, 1, &shader, NULL);
Driver->extGlCompileShaderARB(shaderHandle);
Driver->extGlShaderSource(shaderHandle, 1, &shader, NULL);
Driver->extGlCompileShader(shaderHandle);
int status = 0;
#ifdef GL_ARB_shader_objects
Driver->extGlGetObjectParameterivARB(shaderHandle, GL_OBJECT_COMPILE_STATUS_ARB, &status);
Driver->extGlGetObjectParameteriv(shaderHandle, GL_OBJECT_COMPILE_STATUS_ARB, &status);
#endif
if (!status)
......@@ -192,30 +192,30 @@ bool COpenGLSLMaterialRenderer::createShader(GLenum shaderType, const char* shad
int maxLength=0;
GLsizei length;
#ifdef GL_ARB_shader_objects
Driver->extGlGetObjectParameterivARB(shaderHandle,
Driver->extGlGetObjectParameteriv(shaderHandle,
GL_OBJECT_INFO_LOG_LENGTH_ARB, &maxLength);
#endif
GLcharARB *pInfoLog = new GLcharARB[maxLength];
Driver->extGlGetInfoLogARB(shaderHandle, maxLength, &length, pInfoLog);
Driver->extGlGetInfoLog(shaderHandle, maxLength, &length, pInfoLog);
os::Printer::log((const c8*)pInfoLog);
delete [] pInfoLog;
return false;
}
Driver->extGlAttachObjectARB(Program, shaderHandle);
Driver->extGlAttachObject(Program, shaderHandle);
return true;
}
bool COpenGLSLMaterialRenderer::linkProgram()
{
Driver->extGlLinkProgramARB(Program);
Driver->extGlLinkProgram(Program);
int status = 0;
#ifdef GL_ARB_shader_objects
Driver->extGlGetObjectParameterivARB(Program, GL_OBJECT_LINK_STATUS_ARB, &status);
Driver->extGlGetObjectParameteriv(Program, GL_OBJECT_LINK_STATUS_ARB, &status);
#endif
if (!status)
......@@ -225,11 +225,11 @@ bool COpenGLSLMaterialRenderer::linkProgram()
int maxLength=0;
GLsizei length;
#ifdef GL_ARB_shader_objects
Driver->extGlGetObjectParameterivARB(Program,
Driver->extGlGetObjectParameteriv(Program,
GL_OBJECT_INFO_LOG_LENGTH_ARB, &maxLength);
#endif
GLcharARB *pInfoLog = new GLcharARB[maxLength];
Driver->extGlGetInfoLogARB(Program, maxLength, &length, pInfoLog);
Driver->extGlGetInfoLog(Program, maxLength, &length, pInfoLog);
os::Printer::log((const c8*)pInfoLog);
delete [] pInfoLog;
......@@ -240,7 +240,7 @@ bool COpenGLSLMaterialRenderer::linkProgram()
int num = 0;
#ifdef GL_ARB_shader_objects
Driver->extGlGetObjectParameterivARB(Program, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &num);
Driver->extGlGetObjectParameteriv(Program, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &num);
#endif
if (num == 0)
......@@ -251,7 +251,7 @@ bool COpenGLSLMaterialRenderer::linkProgram()
int maxlen = 0;
#ifdef GL_ARB_shader_objects
Driver->extGlGetObjectParameterivARB(Program, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB, &maxlen);
Driver->extGlGetObjectParameteriv(Program, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB, &maxlen);
#endif
if (maxlen == 0)
......@@ -271,7 +271,7 @@ bool COpenGLSLMaterialRenderer::linkProgram()
memset(buf, 0, maxlen);
GLint size;
Driver->extGlGetActiveUniformARB(Program, i, maxlen, 0, &size, &ui.type, (GLcharARB*)buf);
Driver->extGlGetActiveUniform(Program, i, maxlen, 0, &size, &ui.type, (GLcharARB*)buf);
ui.name = buf;
UniformInfo.push_back(ui);
......@@ -320,28 +320,28 @@ bool COpenGLSLMaterialRenderer::setPixelShaderConstant(const c8* name, const f32
switch (UniformInfo[i].type)
{
case GL_FLOAT:
Driver->extGlUniform1fvARB(i, count, floats);
Driver->extGlUniform1fv(i, count, floats);
break;
case GL_FLOAT_VEC2_ARB:
Driver->extGlUniform2fvARB(i, count/2, floats);
Driver->extGlUniform2fv(i, count/2, floats);
break;
case GL_FLOAT_VEC3_ARB:
Driver->extGlUniform3fvARB(i, count/3, floats);
Driver->extGlUniform3fv(i, count/3, floats);
break;
case GL_FLOAT_VEC4_ARB:
Driver->extGlUniform4fvARB(i, count/4, floats);
Driver->extGlUniform4fv(i, count/4, floats);
break;
case GL_FLOAT_MAT2_ARB:
Driver->extGlUniformMatrix2fvARB(i, count/4, false, floats);
Driver->extGlUniformMatrix2fv(i, count/4, false, floats);
break;
case GL_FLOAT_MAT3_ARB:
Driver->extGlUniformMatrix3fvARB(i, count/9, false, floats);
Driver->extGlUniformMatrix3fv(i, count/9, false, floats);
break;
case GL_FLOAT_MAT4_ARB:
Driver->extGlUniformMatrix4fvARB(i, count/16, false, floats);
Driver->extGlUniformMatrix4fv(i, count/16, false, floats);
break;
default:
Driver->extGlUniform1ivARB(i, count, (GLint*)floats);
Driver->extGlUniform1iv(i, count, (GLint*)floats);
break;
}
#endif
......
......@@ -58,10 +58,10 @@ COpenGLShaderMaterialRenderer::~COpenGLShaderMaterialRenderer()
CallBack->drop();
if (VertexShader)
Driver->extGlDeleteProgramsARB(1, &VertexShader);
Driver->extGlDeletePrograms(1, &VertexShader);
if (PixelShader)
Driver->extGlDeleteProgramsARB(1, &PixelShader);
Driver->extGlDeletePrograms(1, &PixelShader);
if (BaseMaterial)
BaseMaterial->drop ();
......@@ -110,7 +110,7 @@ void COpenGLShaderMaterialRenderer::OnSetMaterial(video::SMaterial& material, co
if (VertexShader)
{
// set new vertex shader
Driver->extGlBindProgramARB(GL_VERTEX_PROGRAM_ARB, VertexShader);
Driver->extGlBindProgram(GL_VERTEX_PROGRAM_ARB, VertexShader);
glEnable(GL_VERTEX_PROGRAM_ARB);
}
#endif
......@@ -119,7 +119,7 @@ void COpenGLShaderMaterialRenderer::OnSetMaterial(video::SMaterial& material, co
#ifdef GL_ARB_fragment_program
if (PixelShader)
{
Driver->extGlBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, PixelShader);
Driver->extGlBindProgram(GL_FRAGMENT_PROGRAM_ARB, PixelShader);
glEnable(GL_FRAGMENT_PROGRAM_ARB);
}
#endif
......@@ -158,15 +158,15 @@ bool COpenGLShaderMaterialRenderer::createPixelShader(const c8* pxsh)
if (!pxsh)
return true;
Driver->extGlGenProgramsARB(1, &PixelShader);
Driver->extGlGenPrograms(1, &PixelShader);
#ifdef GL_ARB_fragment_program
Driver->extGlBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, PixelShader);
Driver->extGlBindProgram(GL_FRAGMENT_PROGRAM_ARB, PixelShader);
// clear error buffer
while(glGetError() != GL_NO_ERROR) {}
// compile
Driver->extGlProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
Driver->extGlProgramString(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
strlen(pxsh), pxsh);
#endif
......@@ -198,14 +198,14 @@ bool COpenGLShaderMaterialRenderer::createVertexShader(const char* vtxsh)
return true;
#ifdef GL_ARB_vertex_program
Driver->extGlGenProgramsARB(1, &VertexShader);
Driver->extGlBindProgramARB(GL_VERTEX_PROGRAM_ARB, VertexShader);
Driver->extGlGenPrograms(1, &VertexShader);
Driver->extGlBindProgram(GL_VERTEX_PROGRAM_ARB, VertexShader);
// clear error buffer
while(glGetError() != GL_NO_ERROR) {}
// compile
Driver->extGlProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
Driver->extGlProgramString(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
strlen(vtxsh), vtxsh);
GLenum g = glGetError();
......
......@@ -107,23 +107,23 @@ COpenGLTexture::COpenGLTexture(const core::dimension2d<s32>& size,
#ifdef GL_EXT_framebuffer_object
// generate frame buffer
Driver->extGlGenFramebuffersEXT(1, &ColorFrameBuffer);
Driver->extGlBindFramebufferEXT(GL_FRAMEBUFFER_EXT, ColorFrameBuffer);
Driver->extGlGenFramebuffers(1, &ColorFrameBuffer);
Driver->extGlBindFramebuffer(GL_FRAMEBUFFER_EXT, ColorFrameBuffer);
// attach color texture to frame buffer
Driver->extGlFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER_EXT,
GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D,
TextureName,
0);
// attach depth texture to depth buffer
Driver->extGlFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER_EXT,
GL_DEPTH_ATTACHMENT_EXT,
GL_TEXTURE_2D,
DepthRenderBuffer,
0);
// attach stencil texture to stencil buffer
Driver->extGlFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER_EXT,
GL_STENCIL_ATTACHMENT_EXT,
GL_TEXTURE_2D,
StencilRenderBuffer,
......@@ -136,7 +136,7 @@ COpenGLTexture::COpenGLTexture(const core::dimension2d<s32>& size,
printf("FBO=%d, Color=%d, Depth=%d, Stencil=%d\n",
ColorFrameBuffer, TextureName, DepthRenderBuffer, StencilRenderBuffer);
if (ColorFrameBuffer)
Driver->extGlDeleteFramebuffersEXT(1, &ColorFrameBuffer);
Driver->extGlDeleteFramebuffers(1, &ColorFrameBuffer);
if (DepthRenderBuffer)
glDeleteTextures(1, &DepthRenderBuffer);
if (StencilRenderBuffer && StencilRenderBuffer != DepthRenderBuffer)
......@@ -145,7 +145,7 @@ COpenGLTexture::COpenGLTexture(const core::dimension2d<s32>& size,
DepthRenderBuffer = 0;
StencilRenderBuffer = 0;
}
Driver->extGlBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
Driver->extGlBindFramebuffer(GL_FRAMEBUFFER_EXT, 0);
#endif
}
......@@ -153,7 +153,7 @@ COpenGLTexture::COpenGLTexture(const core::dimension2d<s32>& size,
COpenGLTexture::~COpenGLTexture()
{
if (ColorFrameBuffer)
Driver->extGlDeleteFramebuffersEXT(1, &ColorFrameBuffer);
Driver->extGlDeleteFramebuffers(1, &ColorFrameBuffer);
if (DepthRenderBuffer)
glDeleteTextures(1, &DepthRenderBuffer);
if (StencilRenderBuffer && StencilRenderBuffer != DepthRenderBuffer)
......@@ -459,7 +459,7 @@ void COpenGLTexture::bindFrameBufferObject()
{
#ifdef GL_EXT_framebuffer_object
if (ColorFrameBuffer != 0)
Driver->extGlBindFramebufferEXT(GL_FRAMEBUFFER_EXT, ColorFrameBuffer);
Driver->extGlBindFramebuffer(GL_FRAMEBUFFER_EXT, ColorFrameBuffer);
#endif
}
......@@ -468,14 +468,14 @@ void COpenGLTexture::unbindFrameBufferObject()
{
#ifdef GL_EXT_framebuffer_object
if (ColorFrameBuffer != 0)
Driver->extGlBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
Driver->extGlBindFramebuffer(GL_FRAMEBUFFER_EXT, 0);
#endif
}
bool checkFBOStatus(COpenGLDriver* Driver)
{
#ifdef GL_EXT_framebuffer_object
GLenum status = Driver->extGlCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
GLenum status = Driver->extGlCheckFramebufferStatus(GL_FRAMEBUFFER_EXT);
switch (status)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment