diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index 0891d297..9b9e80d1 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -27,6 +27,23 @@ void lovrGraphicsInit() { // TODO customize via lovr.conf lovrGraphicsSetProjection(.1f, 100.f, 67 * M_PI / 180); + + char vertexShaderSource[128]; + snprintf(vertexShaderSource, sizeof(vertexShaderSource), "%s", + "void main() { \n" + " gl_Position = lovrProjection * lovrTransform * vec4(position.xyz, 1.0); \n" + "}" + ); + + char fragmentShaderSource[64]; + snprintf(fragmentShaderSource, sizeof(fragmentShaderSource), "%s", + "void main() { \n" + " color = vec4(1.0); \n" + "}" + ); + + state.defaultShader = lovrGraphicsNewShader(vertexShaderSource, fragmentShaderSource); + lovrGraphicsSetShader(state.defaultShader); } void lovrGraphicsClear(int color, int depth) { @@ -92,6 +109,10 @@ Shader* lovrGraphicsGetShader() { // TODO default shader void lovrGraphicsSetShader(Shader* shader) { + if (!shader) { + shader = state.defaultShader; + } + state.activeShader = shader; glUseProgram(shader->id); } diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 073ebaa4..7f861f60 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -9,6 +9,7 @@ typedef vec_t(mat4) vec_mat4_t; typedef struct { Shader* activeShader; + Shader* defaultShader; vec_mat4_t transforms; mat4 lastTransform; mat4 projection;