Skip to content

Commit

Permalink
Merge pull request #20 from John-Colvin/patch-6
Browse files Browse the repository at this point in the history
add support for tessellation shaders, if the necessary enums are available
  • Loading branch information
Dav1dde committed Feb 22, 2015
2 parents eec98e0 + 839d866 commit 8562aa5
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions glamour/shader.d
Expand Up @@ -3,7 +3,6 @@ module glamour.shader;
private {
import glamour.gl : GLenum, GLuint, GLint, GLchar, GLboolean,
GL_VERTEX_SHADER,
// GL_TESS_CONTROL_SHADER, GL_TESS_EVALUATION_SHADER,
GL_GEOMETRY_SHADER, GL_FRAGMENT_SHADER,
GL_LINK_STATUS, GL_FALSE, GL_INFO_LOG_LENGTH,
GL_COMPILE_STATUS, GL_TRUE,
Expand All @@ -18,6 +17,12 @@ private {
glUniformMatrix2x4fv, glUniformMatrix3fv, glUniformMatrix3x2fv,
glUniformMatrix3x4fv, glUniformMatrix4fv, glUniformMatrix4x2fv,
glUniformMatrix4x3fv, glUniform2iv, glUniform3iv, glUniform4iv;
static if(__traits(compiles,
{import glamour.gl : GL_TESS_CONTROL_SHADER, GL_TESS_EVALUATION_SHADER;}))
{
import glamour.gl : GL_TESS_CONTROL_SHADER, GL_TESS_EVALUATION_SHADER;
version = tessEnums;
}
import glamour.util : checkgl;

import std.conv : to;
Expand All @@ -28,7 +33,7 @@ private {
import std.algorithm : startsWith, endsWith;
import std.exception : enforceEx;
import std.typecons : Tuple;

version(gl3n) {
import gl3n.util : is_vector, is_matrix, is_quaternion;
}
Expand All @@ -42,6 +47,15 @@ GLenum to_opengl_shader(string s, string filename="<unknown>") {
case "vertex": return GL_VERTEX_SHADER;
case "geometry": return GL_GEOMETRY_SHADER;
case "fragment": return GL_FRAGMENT_SHADER;
version(tessEnums) {
case "control": return GL_TESS_CONTROL_SHADER;
case "eval": return GL_TESS_EVALUATION_SHADER;
} else {
case "control":
case "eval": throw new ShaderException(
"OpenGL bindings used do not support tesselation shaders",
"load", filename);
}
default: throw new ShaderException(format("Unknown shader, %s.", s), "load", filename);
}
assert(0);
Expand Down Expand Up @@ -467,4 +481,4 @@ class Shader {
void uniform_matrix4fv(GLint name, const float[] value, GLboolean transpose=GL_TRUE, int count=1) {
checkgl!glUniformMatrix4fv(name, count, transpose, value.ptr);
}
}
}

0 comments on commit 8562aa5

Please sign in to comment.