Added OpenGL support for sampler objects
Also prevented an exception launch by the SeparateShaderObjects code to escape. Former-commit-id: ae594e16a85c02f0c649ef573189b4b722f713c3
This commit is contained in:
parent
9839e36171
commit
e699969b64
|
|
@ -31,6 +31,7 @@ enum nzOpenGLExtension
|
|||
nzOpenGLExtension_FP64,
|
||||
nzOpenGLExtension_FrameBufferObject,
|
||||
nzOpenGLExtension_PixelBufferObject,
|
||||
nzOpenGLExtension_SamplerObjects,
|
||||
nzOpenGLExtension_SeparateShaderObjects,
|
||||
nzOpenGLExtension_TextureArray,
|
||||
nzOpenGLExtension_TextureCompression_s3tc,
|
||||
|
|
@ -96,6 +97,7 @@ NAZARA_API extern PFNGLBINDBUFFERPROC glBindBuffer;
|
|||
NAZARA_API extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
|
||||
NAZARA_API extern PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
|
||||
NAZARA_API extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
|
||||
NAZARA_API extern PFNGLBINDSAMPLERPROC glBindSampler;
|
||||
NAZARA_API extern PFNGLBINDTEXTUREPROC glBindTexture;
|
||||
NAZARA_API extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
|
||||
NAZARA_API extern PFNGLBLENDFUNCPROC glBlendFunc;
|
||||
|
|
@ -120,6 +122,7 @@ NAZARA_API extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
|
|||
NAZARA_API extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
|
||||
NAZARA_API extern PFNGLDELETEQUERIESPROC glDeleteQueries;
|
||||
NAZARA_API extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
|
||||
NAZARA_API extern PFNGLDELETESAMPLERSPROC glDeleteSamplers;
|
||||
NAZARA_API extern PFNGLDELETESHADERPROC glDeleteShader;
|
||||
NAZARA_API extern PFNGLDELETETEXTURESPROC glDeleteTextures;
|
||||
NAZARA_API extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
|
||||
|
|
@ -146,6 +149,7 @@ NAZARA_API extern PFNGLGENBUFFERSPROC glGenBuffers;
|
|||
NAZARA_API extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
|
||||
NAZARA_API extern PFNGLGENQUERIESPROC glGenQueries;
|
||||
NAZARA_API extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
|
||||
NAZARA_API extern PFNGLGENSAMPLERSPROC glGenSamplers;
|
||||
NAZARA_API extern PFNGLGENTEXTURESPROC glGenTextures;
|
||||
NAZARA_API extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
|
||||
NAZARA_API extern PFNGLGETBOOLEANVPROC glGetBooleanv;
|
||||
|
|
@ -191,6 +195,8 @@ NAZARA_API extern PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
|
|||
NAZARA_API extern PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
|
||||
NAZARA_API extern PFNGLREADPIXELSPROC glReadPixels;
|
||||
NAZARA_API extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
|
||||
NAZARA_API extern PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
|
||||
NAZARA_API extern PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
|
||||
NAZARA_API extern PFNGLSCISSORPROC glScissor;
|
||||
NAZARA_API extern PFNGLSHADERSOURCEPROC glShaderSource;
|
||||
NAZARA_API extern PFNGLSTENCILFUNCPROC glStencilFunc;
|
||||
|
|
|
|||
|
|
@ -447,8 +447,29 @@ namespace NzOpenGL
|
|||
// PixelBufferObject
|
||||
openGLextensions[nzOpenGLExtension_PixelBufferObject] = (openGLversion >= 210 || IsSupported("GL_ARB_pixel_buffer_object"));
|
||||
|
||||
// SamplerObjects
|
||||
if (openGLversion >= 430 || (openGLversion < 400 && openGLversion >= 330) || IsSupported("GL_ARB_sampler_objects"))
|
||||
{
|
||||
try
|
||||
{
|
||||
glBindSampler = reinterpret_cast<PFNGLBINDSAMPLERPROC>(LoadEntry("glBindSampler"));
|
||||
glDeleteSamplers = reinterpret_cast<PFNGLDELETESAMPLERSPROC>(LoadEntry("glDeleteSamplers"));
|
||||
glGenSamplers = reinterpret_cast<PFNGLGENSAMPLERSPROC>(LoadEntry("glGenSamplers"));
|
||||
glSamplerParameterf = reinterpret_cast<PFNGLSAMPLERPARAMETERFPROC>(LoadEntry("glSamplerParameterf"));
|
||||
glSamplerParameteri = reinterpret_cast<PFNGLSAMPLERPARAMETERIPROC>(LoadEntry("glSamplerParameteri"));
|
||||
|
||||
openGLextensions[nzOpenGLExtension_SamplerObjects] = true;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
NazaraWarning("Failed to load ARB_sampler_objects: (" + NzString(e.what()) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
// SeparateShaderObjects
|
||||
if (openGLversion >= 400 || IsSupported("GL_ARB_separate_shader_objects"))
|
||||
{
|
||||
try
|
||||
{
|
||||
glProgramUniform1f = reinterpret_cast<PFNGLPROGRAMUNIFORM1FPROC>(LoadEntry("glProgramUniform1f"));
|
||||
glProgramUniform1i = reinterpret_cast<PFNGLPROGRAMUNIFORM1IPROC>(LoadEntry("glProgramUniform1i"));
|
||||
|
|
@ -469,6 +490,11 @@ namespace NzOpenGL
|
|||
|
||||
openGLextensions[nzOpenGLExtension_SeparateShaderObjects] = true;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
NazaraWarning("Failed to load ARB_separate_shader_objects: (" + NzString(e.what()) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
// TextureArray
|
||||
openGLextensions[nzOpenGLExtension_TextureArray] = (openGLversion >= 300 || IsSupported("GL_EXT_texture_array"));
|
||||
|
|
@ -886,6 +912,7 @@ PFNGLBINDBUFFERPROC glBindBuffer = nullptr;
|
|||
PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer = nullptr;
|
||||
PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation = nullptr;
|
||||
PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer = nullptr;
|
||||
PFNGLBINDSAMPLERPROC glBindSampler = nullptr;
|
||||
PFNGLBINDTEXTUREPROC glBindTexture = nullptr;
|
||||
PFNGLBINDVERTEXARRAYPROC glBindVertexArray = nullptr;
|
||||
PFNGLBLENDFUNCPROC glBlendFunc = nullptr;
|
||||
|
|
@ -910,6 +937,7 @@ PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = nullptr;
|
|||
PFNGLDELETEPROGRAMPROC glDeleteProgram = nullptr;
|
||||
PFNGLDELETEQUERIESPROC glDeleteQueries = nullptr;
|
||||
PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers = nullptr;
|
||||
PFNGLDELETESAMPLERSPROC glDeleteSamplers = nullptr;
|
||||
PFNGLDELETESHADERPROC glDeleteShader = nullptr;
|
||||
PFNGLDELETETEXTURESPROC glDeleteTextures = nullptr;
|
||||
PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays = nullptr;
|
||||
|
|
@ -936,6 +964,7 @@ PFNGLGENBUFFERSPROC glGenBuffers = nullptr;
|
|||
PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers = nullptr;
|
||||
PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers = nullptr;
|
||||
PFNGLGENQUERIESPROC glGenQueries = nullptr;
|
||||
PFNGLGENSAMPLERSPROC glGenSamplers = nullptr;
|
||||
PFNGLGENTEXTURESPROC glGenTextures = nullptr;
|
||||
PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = nullptr;
|
||||
PFNGLGETBOOLEANVPROC glGetBooleanv = nullptr;
|
||||
|
|
@ -981,6 +1010,8 @@ PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv = nullptr;
|
|||
PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv = nullptr;
|
||||
PFNGLREADPIXELSPROC glReadPixels = nullptr;
|
||||
PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage = nullptr;
|
||||
PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf = nullptr;
|
||||
PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri = nullptr;
|
||||
PFNGLSCISSORPROC glScissor = nullptr;
|
||||
PFNGLSHADERSOURCEPROC glShaderSource = nullptr;
|
||||
PFNGLSTENCILFUNCPROC glStencilFunc = nullptr;
|
||||
|
|
|
|||
Loading…
Reference in New Issue