Browse Source

Shader: ability to use version directive from shader source.

pull/51/head
Vladimír Vondruš 12 years ago
parent
commit
b68843bf22
  1. 6
      src/Magnum/Shader.cpp
  2. 6
      src/Magnum/Shader.h
  3. 7
      src/Magnum/Test/ShaderGLTest.cpp

6
src/Magnum/Shader.cpp

@ -558,11 +558,11 @@ Shader::Shader(const Version version, const Type type): _type(type), _id(0) {
case Version::GLES300: _sources.push_back("#version 300\n"); return; case Version::GLES300: _sources.push_back("#version 300\n"); return;
#endif #endif
case Version::None: /* The user is responsible for (not) adding #version directive */
CORRADE_ASSERT(false, "Shader::Shader(): unsupported version" << version, ); case Version::None: return;
} }
CORRADE_ASSERT_UNREACHABLE(); CORRADE_ASSERT(false, "Shader::Shader(): unsupported version" << version, );
} }
Shader::~Shader() { Shader::~Shader() {

6
src/Magnum/Shader.h

@ -436,8 +436,10 @@ class MAGNUM_EXPORT Shader: public AbstractObject {
* @param version Target version * @param version Target version
* @param type %Shader type * @param type %Shader type
* *
* Creates empty OpenGL shader and adds @c \#version directive at the * Creates empty OpenGL shader and adds @c \#version directive
* beginning. * corresponding to @p version parameter at the beginning. If
* @ref Version::None is specified, (not) adding the @c \#version
* directive is left to the user.
* @see @fn_gl{CreateShader} * @see @fn_gl{CreateShader}
*/ */
explicit Shader(Version version, Type type); explicit Shader(Version version, Type type);

7
src/Magnum/Test/ShaderGLTest.cpp

@ -39,6 +39,7 @@ class ShaderGLTest: public AbstractOpenGLTester {
explicit ShaderGLTest(); explicit ShaderGLTest();
void construct(); void construct();
void constructNoVersion();
void constructCopy(); void constructCopy();
void constructMove(); void constructMove();
@ -51,6 +52,7 @@ class ShaderGLTest: public AbstractOpenGLTester {
ShaderGLTest::ShaderGLTest() { ShaderGLTest::ShaderGLTest() {
addTests({&ShaderGLTest::construct, addTests({&ShaderGLTest::construct,
&ShaderGLTest::constructNoVersion,
&ShaderGLTest::constructCopy, &ShaderGLTest::constructCopy,
&ShaderGLTest::constructMove, &ShaderGLTest::constructMove,
@ -82,6 +84,11 @@ void ShaderGLTest::construct() {
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
} }
void ShaderGLTest::constructNoVersion() {
const Shader shader(Version::None, Shader::Type::Fragment);
CORRADE_VERIFY(shader.sources().empty());
}
void ShaderGLTest::constructCopy() { void ShaderGLTest::constructCopy() {
CORRADE_VERIFY(!(std::is_constructible<Shader, const Shader&>{})); CORRADE_VERIFY(!(std::is_constructible<Shader, const Shader&>{}));
/* GCC 4.6 doesn't have std::is_assignable */ /* GCC 4.6 doesn't have std::is_assignable */

Loading…
Cancel
Save