summaryrefslogtreecommitdiff
path: root/demos/gtk-demo/glarea.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2015-02-09 16:27:44 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2015-02-09 16:32:57 +0000
commit1b0b2c1e396177ea813e6718fe3de2cbf28b622d (patch)
treebdaef0080f32e7435bc852d5fd511d66c52395cf /demos/gtk-demo/glarea.c
parent8eb58dc5574e996d4c0676db6f9ef667e7261d6f (diff)
downloadgtk+-wip/ebassi/gl-context-realize.tar.gz
demo: Move the GLSL shaders to resourceswip/ebassi/gl-context-realize
It's easier to use them or modify them as separate files, instead of inlined inside the C source. https://bugzilla.gnome.org/show_bug.cgi?id=741946
Diffstat (limited to 'demos/gtk-demo/glarea.c')
-rw-r--r--demos/gtk-demo/glarea.c31
1 files changed, 9 insertions, 22 deletions
diff --git a/demos/gtk-demo/glarea.c b/demos/gtk-demo/glarea.c
index 548c75fa9f..fd63e86faa 100644
--- a/demos/gtk-demo/glarea.c
+++ b/demos/gtk-demo/glarea.c
@@ -91,26 +91,6 @@ create_shader (int type,
return shader;
}
-/* The code for the vertex shader we are going to use */
-static const char *vertex_shader_code =
-"#version 330\n" \
-"\n" \
-"layout(location = 0) in vec4 position;\n" \
-"uniform mat4 mvp;\n"
-"void main() {\n" \
-" gl_Position = mvp * position;\n" \
-"}";
-
-/* The code for the fragment shader we are going to use */
-static const char *fragment_shader_code =
-"#version 330\n" \
-"\n" \
-"out vec4 outputColor;\n" \
-"void main() {\n" \
-" float lerpVal = gl_FragCoord.y / 400.0f;\n" \
-" outputColor = mix(vec4(1.0f, 0.85f, 0.35f, 1.0f), vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpVal);\n" \
-"}";
-
/* Initialize the shaders and link them into a program */
static void
init_shaders (GLuint *program_out,
@@ -120,15 +100,22 @@ init_shaders (GLuint *program_out,
GLuint program = 0;
GLuint mvp = 0;
int status;
+ GBytes *source;
+
+ source = g_resources_lookup_data ("/shaders/glarea-vertex.glsl", 0, NULL);
+ vertex = create_shader (GL_VERTEX_SHADER, g_bytes_get_data (source, NULL));
+ g_bytes_unref (source);
- vertex = create_shader (GL_VERTEX_SHADER, vertex_shader_code);
if (vertex == 0)
{
*program_out = 0;
return;
}
- fragment = create_shader (GL_FRAGMENT_SHADER, fragment_shader_code);
+ source = g_resources_lookup_data ("/shaders/glarea-fragment.glsl", 0, NULL);
+ fragment = create_shader (GL_FRAGMENT_SHADER, g_bytes_get_data (source, NULL));
+ g_bytes_unref (source);
+
if (fragment == 0)
{
glDeleteShader (vertex);