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;
#endif
case Version::None:
CORRADE_ASSERT(false, "Shader::Shader(): unsupported version" << version, );
/* The user is responsible for (not) adding #version directive */
case Version::None: return;
}
CORRADE_ASSERT_UNREACHABLE();
CORRADE_ASSERT(false, "Shader::Shader(): unsupported version" << version, );
}
Shader::~Shader() {

6
src/Magnum/Shader.h

@ -436,8 +436,10 @@ class MAGNUM_EXPORT Shader: public AbstractObject {
* @param version Target version
* @param type %Shader type
*
* Creates empty OpenGL shader and adds @c \#version directive at the
* beginning.
* Creates empty OpenGL shader and adds @c \#version directive
* 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}
*/
explicit Shader(Version version, Type type);

7
src/Magnum/Test/ShaderGLTest.cpp

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

Loading…
Cancel
Save