Browse Source

Added and fully implemented OES_standard_derivatives extension.

pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
7b0f762683
  1. 1
      src/Context.cpp
  2. 1
      src/Extensions.h
  3. 4
      src/Renderer.cpp
  4. 36
      src/Renderer.h

1
src/Context.cpp

@ -251,6 +251,7 @@ const std::vector<Extension>& Extension::extensions(Version version) {
_extension(GL,OES,vertex_half_float), _extension(GL,OES,vertex_half_float),
_extension(GL,OES,packed_depth_stencil), _extension(GL,OES,packed_depth_stencil),
_extension(GL,OES,depth_texture), _extension(GL,OES,depth_texture),
_extension(GL,OES,standard_derivatives), // done
_extension(GL,OES,vertex_array_object), _extension(GL,OES,vertex_array_object),
_extension(GL,OES,required_internalformat)}; _extension(GL,OES,required_internalformat)};
#endif #endif

1
src/Extensions.h

@ -236,6 +236,7 @@ namespace GL {
_extension(GL,OES,vertex_half_float, GLES200, GLES300) // #38 _extension(GL,OES,vertex_half_float, GLES200, GLES300) // #38
_extension(GL,OES,packed_depth_stencil, GLES200, GLES300) // #43 _extension(GL,OES,packed_depth_stencil, GLES200, GLES300) // #43
_extension(GL,OES,depth_texture, GLES200, GLES300) // #44 _extension(GL,OES,depth_texture, GLES200, GLES300) // #44
_extension(GL,OES,standard_derivatives, GLES200, GLES300) // #45
_extension(GL,OES,vertex_array_object, GLES200, GLES300) // #71 _extension(GL,OES,vertex_array_object, GLES200, GLES300) // #71
_extension(GL,OES,required_internalformat, GLES200, GLES300) // #? _extension(GL,OES,required_internalformat, GLES200, GLES300) // #?
} }

4
src/Renderer.cpp

@ -46,6 +46,10 @@ void Renderer::setFeature(const Feature feature, const bool enabled) {
enabled ? glEnable(GLenum(feature)) : glDisable(GLenum(feature)); enabled ? glEnable(GLenum(feature)) : glDisable(GLenum(feature));
} }
void Renderer::setHint(const Hint target, const HintMode mode) {
glHint(GLenum(target), GLenum(mode));
}
void Renderer::setClearColor(const Color4<>& color) { void Renderer::setClearColor(const Color4<>& color) {
glClearColor(color.r(), color.g(), color.b(), color.a()); glClearColor(color.r(), color.g(), color.b(), color.a());
} }

36
src/Renderer.h

@ -192,6 +192,42 @@ class MAGNUM_EXPORT Renderer {
*/ */
static void setFeature(Feature feature, bool enabled); static void setFeature(Feature feature, bool enabled);
/**
* @brief Hint
*
* @see setHint()
*/
enum class Hint: GLenum {
/**
* Accuracy of derivative calculation in fragment shader.
* @requires_gles30 %Extension @es_extension{OES,standard_derivatives}
*/
#ifndef MAGNUM_TARGET_GLES2
FragmentShaderDerivative = GL_FRAGMENT_SHADER_DERIVATIVE_HINT
#else
FragmentShaderDerivative = GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES
#endif
};
/**
* @brief Hint mode
*
* @see setHint()
*/
enum class HintMode: GLenum {
Fastest = GL_FASTEST, /**< Most efficient option. */
Nicest = GL_NICEST, /**< Most correct or highest quality option. */
DontCare = GL_DONT_CARE /**< No preference. */
};
/**
* @brief Set hint
*
* Initial value is @ref HintMode "HintMode::DontCare" for all targets.
* @see @fn_gl{Hint}
*/
static void setHint(Hint target, HintMode mode);
/*@}*/ /*@}*/
/** @{ @name Clearing values */ /** @{ @name Clearing values */

Loading…
Cancel
Save