Browse Source

GL: implement {ARB,EXT}_clip_control.

pull/601/head
Vladimír Vondruš 3 years ago
parent
commit
db29024250
  1. 3
      doc/changelog.dox
  2. 2
      doc/opengl-mapping.dox
  3. 3
      doc/opengl-support.dox
  4. 1
      src/Magnum/GL/Context.cpp
  5. 5
      src/Magnum/GL/Extensions.h
  6. 10
      src/Magnum/GL/Renderer.cpp
  7. 71
      src/Magnum/GL/Renderer.h
  8. 27
      src/Magnum/GL/Test/RendererGLTest.cpp
  9. 1
      src/MagnumExternal/OpenGL/GLES2/extensions.txt
  10. 17
      src/MagnumExternal/OpenGL/GLES2/flextGL.h
  11. 3
      src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp
  12. 6
      src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp
  13. 3
      src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp
  14. 17
      src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h
  15. 1
      src/MagnumExternal/OpenGL/GLES3/extensions.txt
  16. 17
      src/MagnumExternal/OpenGL/GLES3/flextGL.h
  17. 3
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp
  18. 6
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp
  19. 3
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp
  20. 17
      src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h

3
doc/changelog.dox

@ -101,6 +101,9 @@ See also:
matching @gl_extension{OES,texture_view} and @gl_extension{EXT,texture_view}
extensions on GLES 3.1+, exposed as @ref GL::Texture::view() and similar
APIs on other texture types
- Implemented the GL 4.5 @gl_extension{ARB,clip_control} extension and
matching @gl_extension{EXT,clip_control} extension on GLES, exposed as
@ref GL::Renderer::setClipControl(). See also [mosra/magnum#543](https://github.com/mosra/magnum/issues/543).
- Implemented @gl_extension{EXT,texture_norm16} and
@webgl_extension{EXT,texture_norm16} ES and WebGL extensions, making
normalized 16-bit texture and renderbuffer formats available on all

2
doc/opengl-mapping.dox

@ -106,7 +106,7 @@ OpenGL function | Matching API
@fn_gl{ClearTexImage} | |
@fn_gl{ClearTexSubImage} | |
@fn_gl{ClientWaitSync} | |
@fn_gl{ClipControl} | |
@fn_gl{ClipControl} | @ref GL::Renderer::setClipControl()
@fn_gl{ColorMask}, \n `glColorMaski()` | @ref GL::Renderer::setColorMask()
@fn_gl{CompileShader} | @ref GL::Shader::compile()
@fn_gl{CompressedTexImage1D}, \n @fn_gl{CompressedTexImage2D}, \n @fn_gl{CompressedTexImage3D} | @ref GL::Texture::setCompressedImage(), \n @ref GL::TextureArray::setCompressedImage(), \n @ref GL::CubeMapTexture::setCompressedImage(), \n @ref GL::CubeMapTextureArray::setCompressedImage(), \n @ref GL::RectangleTexture::setCompressedImage()

3
doc/opengl-support.dox

@ -243,7 +243,7 @@ Extension | Status
------------------------------------------- | ------
GLSL 4.50 | done
@gl_extension{ARB,ES3_1_compatibility} | done
@gl_extension{ARB,clip_control} | |
@gl_extension{ARB,clip_control} | done
@gl_extension{ARB,conditional_render_inverted} | done
@gl_extension{ARB,cull_distance} | done
@gl_extension{ARB,derivative_control} | done (shading language only)
@ -482,6 +482,7 @@ Extension | Status
@gl_extension{EXT,texture_compression_rgtc} | done
@gl_extension{EXT,texture_compression_bptc} | done
@gl_extension{EXT,texture_compression_s3tc_srgb} | done
@gl_extension{EXT,clip_control} | done
@gl_extension{EXT,depth_clamp} | done
@gl_extension{IMG,texture_compression_pvrtc} | done
@gl_extension2{KHR,texture_compression_astc_hdr,KHR_texture_compression_astc_hdr} | done

1
src/Magnum/GL/Context.cpp

@ -356,6 +356,7 @@ constexpr Extension ExtensionList[]{
Extensions::APPLE::texture_format_BGRA8888{},
Extensions::ARM::shader_framebuffer_fetch{},
Extensions::ARM::shader_framebuffer_fetch_depth_stencil{},
Extensions::EXT::clip_control{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::clip_cull_distance{},
#endif

5
src/Magnum/GL/Extensions.h

@ -479,9 +479,10 @@ namespace ANDROID {
_extension( 70,EXT,texture_compression_bptc, GLES300, None) // #287
#endif
_extension( 71,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289
_extension( 72,EXT,depth_clamp, GLES200, None) // #309
_extension( 72,EXT,clip_control, GLES200, None) // #290
_extension( 73,EXT,depth_clamp, GLES200, None) // #309
} namespace IMG {
_extension( 73,IMG,texture_compression_pvrtc, GLES200, None) // #54
_extension( 74,IMG,texture_compression_pvrtc, GLES200, None) // #54
} namespace KHR {
_extension( 80,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117
_extension( 81,KHR,texture_compression_astc_hdr,GLES200, None) // #117

10
src/Magnum/GL/Renderer.cpp

@ -326,6 +326,16 @@ void Renderer::depthRangefImplementationDefault(const Float near, const Float fa
}
#endif
#ifndef MAGNUM_TARGET_WEBGL
void Renderer::setClipControl(const ClipOrigin origin, const ClipDepth depth) {
#ifndef MAGNUM_TARGET_GLES
glClipControl(GLenum(origin), GLenum(depth));
#else
glClipControlEXT(GLenum(origin), GLenum(depth));
#endif
}
#endif
void Renderer::setColorMask(const GLboolean allowRed, const GLboolean allowGreen, const GLboolean allowBlue, const GLboolean allowAlpha) {
glColorMask(allowRed, allowGreen, allowBlue, allowAlpha);
}

71
src/Magnum/GL/Renderer.h

@ -1187,7 +1187,61 @@ class MAGNUM_GL_EXPORT Renderer {
* @}
*/
/** @{ @name Depth testing */
/** @{ @name Depth testing and clip control */
#ifndef MAGNUM_TARGET_WEBGL
/**
* @brief Clip origin
* @m_since_latest
*
* @see @ref setClipControl()
* @m_enum_values_as_keywords
* @requires_gl45 Extension @gl_extension{ARB,clip_control}
* @requires_es_extension Extension @gl_extension{EXT,clip_control}
* @requires_gles Clip control is not available in WebGL.
*/
enum class ClipOrigin: GLenum {
/** Lower left */
#ifndef MAGNUM_TARGET_GLES
LowerLeft = GL_LOWER_LEFT,
#else
LowerLeft = GL_LOWER_LEFT_EXT,
#endif
/** Upper left */
#ifndef MAGNUM_TARGET_GLES
UpperLeft = GL_UPPER_LEFT,
#else
UpperLeft = GL_UPPER_LEFT_EXT,
#endif
};
/**
* @brief Clip depth
* @m_since_latest
*
* @see @ref setClipControl()
* @m_enum_values_as_keywords
* @requires_gl45 Extension @gl_extension{ARB,clip_control}
* @requires_es_extension Extension @gl_extension{EXT,clip_control}
* @requires_gles Clip control is not available in WebGL.
*/
enum class ClipDepth: GLenum {
/** -1 to 1 */
#ifndef MAGNUM_TARGET_GLES
NegativeOneToOne = GL_NEGATIVE_ONE_TO_ONE,
#else
NegativeOneToOne = GL_NEGATIVE_ONE_TO_ONE_EXT,
#endif
/** 0 to 1 */
#ifndef MAGNUM_TARGET_GLES
ZeroToOne = GL_ZERO_TO_ONE,
#else
ZeroToOne = GL_ZERO_TO_ONE_EXT,
#endif
};
#endif
/**
* @brief Depth function
@ -1236,6 +1290,21 @@ class MAGNUM_GL_EXPORT Renderer {
*/
static void setDepthRange(Float near, Float far);
#ifndef MAGNUM_TARGET_WEBGL
/**
* @brief Set clipping behavior
* @m_since_latest
*
* Initial value is @ref ClipOrigin::LowerLeft and
* @ref ClipDepth::NegativeOneToOne.
* @see @fn_gl_keyword{ClipControl}
* @requires_gl45 Extension @gl_extension{ARB,clip_control}
* @requires_es_extension Extension @gl_extension{EXT,clip_control}
* @requires_gles Clip control is not available in WebGL.
*/
static void setClipControl(ClipOrigin origin, ClipDepth depth);
#endif
/* Since 1.8.17, the original short-hand group closing doesn't work
anymore. FFS. */
/**

27
src/Magnum/GL/Test/RendererGLTest.cpp

@ -69,6 +69,9 @@ struct RendererGLTest: OpenGLTester {
void drawBuffersBlend();
#endif
template<class T> void clearDepthDepthRange();
#ifndef MAGNUM_TARGET_WEBGL
void clipControl();
#endif
private:
PluginManager::Manager<Trade::AbstractImporter> _manager{"nonexistent"};
@ -93,7 +96,11 @@ RendererGLTest::RendererGLTest() {
#ifndef MAGNUM_TARGET_GLES
&RendererGLTest::clearDepthDepthRange<Double>,
#endif
&RendererGLTest::clearDepthDepthRange<Float>});
&RendererGLTest::clearDepthDepthRange<Float>,
#ifndef MAGNUM_TARGET_WEBGL
&RendererGLTest::clipControl
#endif
});
/* Load the plugins directly from the build tree. Otherwise they're either
static and already loaded or not present in the build tree */
@ -314,6 +321,24 @@ template<class T> void RendererGLTest::clearDepthDepthRange() {
MAGNUM_VERIFY_NO_GL_ERROR();
}
#ifndef MAGNUM_TARGET_WEBGL
void RendererGLTest::clipControl() {
#ifndef MAGNUM_TARGET_GLES
if(!Context::current().isExtensionSupported<Extensions::ARB::clip_control>())
CORRADE_SKIP(Extensions::ARB::clip_control::string() << "is not supported.");
#else
if(!Context::current().isExtensionSupported<Extensions::EXT::clip_control>())
CORRADE_SKIP(Extensions::EXT::clip_control::string() << "is not supported.");
#endif
/* Just setting the default value to verify it doesn't crash or emit an
error */
Renderer::setClipControl(Renderer::ClipOrigin::LowerLeft, Renderer::ClipDepth::NegativeOneToOne);
MAGNUM_VERIFY_NO_GL_ERROR();
}
#endif
}}}}
CORRADE_TEST_MAIN(Magnum::GL::Test::RendererGLTest)

1
src/MagnumExternal/OpenGL/GLES2/extensions.txt vendored

@ -93,6 +93,7 @@ extension EXT_pvrtc_sRGB optional
extension EXT_draw_elements_base_vertex optional
extension EXT_polygon_offset_clamp optional
extension EXT_texture_compression_s3tc_srgb optional
extension EXT_clip_control optional
extension EXT_depth_clamp optional
extension IMG_texture_compression_pvrtc optional
# extension KHR_texture_compression_astc_hdr optional

17
src/MagnumExternal/OpenGL/GLES2/flextGL.h vendored

@ -1004,6 +1004,15 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
/* GL_EXT_clip_control */
#define GL_LOWER_LEFT_EXT 0x8CA1
#define GL_UPPER_LEFT_EXT 0x8CA2
#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
#define GL_ZERO_TO_ONE_EXT 0x935F
#define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F
@ -1256,6 +1265,10 @@ struct FlextGL {
void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
void(APIENTRY *ResolveMultisampleFramebufferAPPLE)(void);
/* GL_EXT_clip_control */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
/* GL_EXT_debug_label */
void(APIENTRY *GetObjectLabelEXT)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *);
@ -1510,6 +1523,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glRenderbufferStorageMultisampleAPPLE flextGL.RenderbufferStorageMultisampleAPPLE
#define glResolveMultisampleFramebufferAPPLE flextGL.ResolveMultisampleFramebufferAPPLE
/* GL_EXT_clip_control */
#define glClipControlEXT flextGL.ClipControlEXT
/* GL_EXT_debug_label */
#define glGetObjectLabelEXT flextGL.GetObjectLabelEXT

3
src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp vendored

@ -54,6 +54,9 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE"));
flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glResolveMultisampleFramebufferAPPLE"));
/* GL_EXT_clip_control */
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT"));
/* GL_EXT_debug_label */
flextGL.GetObjectLabelEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *)>(loader.load("glGetObjectLabelEXT"));
flextGL.LabelObjectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLsizei, const GLchar *)>(loader.load("glLabelObjectEXT"));

6
src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp vendored

@ -36,6 +36,7 @@
#undef glMultiDrawElementsInstancedANGLE
#undef glRenderbufferStorageMultisampleAPPLE
#undef glResolveMultisampleFramebufferAPPLE
#undef glClipControlEXT
#undef glGetObjectLabelEXT
#undef glLabelObjectEXT
#undef glInsertEventMarkerEXT
@ -202,6 +203,11 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast<void(APIENTRY*)(void)>(glResolveMultisampleFramebufferAPPLE);
#endif
/* GL_EXT_clip_control */
#if GL_EXT_clip_control
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glClipControlEXT);
#endif
/* GL_EXT_debug_label */
#if GL_EXT_debug_label
flextGL.GetObjectLabelEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *)>(glGetObjectLabelEXT);

3
src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp vendored

@ -153,6 +153,9 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.VertexAttrib4fv = reinterpret_cast<void(APIENTRY*)(GLuint, const GLfloat *)>(loader.load("glVertexAttrib4fv"));
flextGL.VertexAttribPointer = reinterpret_cast<void(APIENTRY*)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *)>(loader.load("glVertexAttribPointer"));
/* GL_EXT_clip_control */
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT"));
/* GL_EXT_debug_label */
flextGL.GetObjectLabelEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *)>(loader.load("glGetObjectLabelEXT"));
flextGL.LabelObjectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLsizei, const GLchar *)>(loader.load("glLabelObjectEXT"));

17
src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h vendored

@ -1000,6 +1000,15 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
/* GL_EXT_clip_control */
#define GL_LOWER_LEFT_EXT 0x8CA1
#define GL_UPPER_LEFT_EXT 0x8CA2
#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
#define GL_ZERO_TO_ONE_EXT 0x935F
#define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F
@ -1256,6 +1265,10 @@ struct FlextGL {
void(APIENTRY *VertexAttrib4fv)(GLuint, const GLfloat *);
void(APIENTRY *VertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *);
/* GL_EXT_clip_control */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
/* GL_EXT_debug_label */
void(APIENTRY *GetObjectLabelEXT)(GLenum, GLuint, GLsizei, GLsizei *, GLchar *);
@ -1610,6 +1623,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glVertexAttrib4fv flextGL.VertexAttrib4fv
#define glVertexAttribPointer flextGL.VertexAttribPointer
/* GL_EXT_clip_control */
#define glClipControlEXT flextGL.ClipControlEXT
/* GL_EXT_debug_label */
#define glGetObjectLabelEXT flextGL.GetObjectLabelEXT

1
src/MagnumExternal/OpenGL/GLES3/extensions.txt vendored

@ -69,6 +69,7 @@ extension EXT_clip_cull_distance optional
extension EXT_texture_compression_rgtc optional
extension EXT_texture_compression_bptc optional
extension EXT_texture_compression_s3tc_srgb optional
extension EXT_clip_control optional
extension EXT_depth_clamp optional
extension IMG_texture_compression_pvrtc optional
# extension KHR_texture_compression_astc_hdr optional

17
src/MagnumExternal/OpenGL/GLES3/flextGL.h vendored

@ -1629,6 +1629,15 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
/* GL_EXT_clip_control */
#define GL_LOWER_LEFT_EXT 0x8CA1
#define GL_UPPER_LEFT_EXT 0x8CA2
#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
#define GL_ZERO_TO_ONE_EXT 0x935F
#define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F
@ -2101,6 +2110,10 @@ struct FlextGL {
void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *);
void(APIENTRY *TexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
/* GL_EXT_clip_control */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
/* GL_EXT_copy_image */
void(APIENTRY *CopyImageSubDataEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
@ -2452,6 +2465,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glTexParameterIuiv flextGL.TexParameterIuiv
#define glTexStorage3DMultisample flextGL.TexStorage3DMultisample
/* GL_EXT_clip_control */
#define glClipControlEXT flextGL.ClipControlEXT
/* GL_EXT_copy_image */
#define glCopyImageSubDataEXT flextGL.CopyImageSubDataEXT

3
src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp vendored

@ -161,6 +161,9 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.TexParameterIuiv = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const GLuint *)>(loader.load("glTexParameterIuiv"));
flextGL.TexStorage3DMultisample = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)>(loader.load("glTexStorage3DMultisample"));
/* GL_EXT_clip_control */
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT"));
/* GL_EXT_copy_image */
flextGL.CopyImageSubDataEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei)>(loader.load("glCopyImageSubDataEXT"));

6
src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp vendored

@ -33,6 +33,7 @@
#undef glMultiDrawArraysInstancedANGLE
#undef glMultiDrawElementsANGLE
#undef glMultiDrawElementsInstancedANGLE
#undef glClipControlEXT
#undef glCopyImageSubDataEXT
#undef glGetObjectLabelEXT
#undef glLabelObjectEXT
@ -184,6 +185,11 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const GLvoid *const*, const GLsizei*, GLsizei)>(glMultiDrawElementsInstancedANGLE);
#endif
/* GL_EXT_clip_control */
#if GL_EXT_clip_control
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glClipControlEXT);
#endif
/* GL_EXT_copy_image */
#if GL_EXT_copy_image
flextGL.CopyImageSubDataEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei)>(glCopyImageSubDataEXT);

3
src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp vendored

@ -363,6 +363,9 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.TexParameterIuiv = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const GLuint *)>(loader.load("glTexParameterIuiv"));
flextGL.TexStorage3DMultisample = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)>(loader.load("glTexStorage3DMultisample"));
/* GL_EXT_clip_control */
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT"));
/* GL_EXT_copy_image */
flextGL.CopyImageSubDataEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei)>(loader.load("glCopyImageSubDataEXT"));

17
src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h vendored

@ -1622,6 +1622,15 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
/* GL_EXT_clip_control */
#define GL_LOWER_LEFT_EXT 0x8CA1
#define GL_UPPER_LEFT_EXT 0x8CA2
#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E
#define GL_ZERO_TO_ONE_EXT 0x935F
#define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F
@ -2105,6 +2114,10 @@ struct FlextGL {
void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *);
void(APIENTRY *TexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
/* GL_EXT_clip_control */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
/* GL_EXT_copy_image */
void(APIENTRY *CopyImageSubDataEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
@ -2660,6 +2673,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glTexParameterIuiv flextGL.TexParameterIuiv
#define glTexStorage3DMultisample flextGL.TexStorage3DMultisample
/* GL_EXT_clip_control */
#define glClipControlEXT flextGL.ClipControlEXT
/* GL_EXT_copy_image */
#define glCopyImageSubDataEXT flextGL.CopyImageSubDataEXT

Loading…
Cancel
Save