diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2015-02-09 16:27:44 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2015-02-09 16:32:57 +0000 |
commit | 1b0b2c1e396177ea813e6718fe3de2cbf28b622d (patch) | |
tree | bdaef0080f32e7435bc852d5fd511d66c52395cf | |
parent | 8eb58dc5574e996d4c0676db6f9ef667e7261d6f (diff) | |
download | gtk+-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
-rw-r--r-- | demos/gtk-demo/Makefile.am | 2 | ||||
-rw-r--r-- | demos/gtk-demo/demo.gresource.xml | 4 | ||||
-rw-r--r-- | demos/gtk-demo/glarea-fragment.glsl | 9 | ||||
-rw-r--r-- | demos/gtk-demo/glarea-vertex.glsl | 8 | ||||
-rw-r--r-- | demos/gtk-demo/glarea.c | 31 |
5 files changed, 32 insertions, 22 deletions
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am index 145c98a555..183d109719 100644 --- a/demos/gtk-demo/Makefile.am +++ b/demos/gtk-demo/Makefile.am @@ -136,6 +136,8 @@ RESOURCES = \ brick2.png \ background.jpg \ floppybuddy.gif \ + glarea-fragment.glsl \ + glarea-vertex.glsl \ gnome-applets.png \ gnome-calendar.png \ gnome-foot.png \ diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index d861199277..e0e294d5f8 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -140,4 +140,8 @@ <gresource prefix="/popover"> <file>popover.ui</file> </gresource> + <gresource prefix="/shaders"> + <file>glarea-fragment.glsl</file> + <file>glarea-vertex.glsl</file> + </gresource> </gresources> diff --git a/demos/gtk-demo/glarea-fragment.glsl b/demos/gtk-demo/glarea-fragment.glsl new file mode 100644 index 0000000000..aaa7305072 --- /dev/null +++ b/demos/gtk-demo/glarea-fragment.glsl @@ -0,0 +1,9 @@ +#version 330 + +out vec4 outputColor; + +void main() { + float lerpVal = gl_FragCoord.y / 500.0f; + + outputColor = mix(vec4(1.0f, 0.85f, 0.35f, 1.0f), vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpVal); +} diff --git a/demos/gtk-demo/glarea-vertex.glsl b/demos/gtk-demo/glarea-vertex.glsl new file mode 100644 index 0000000000..163f6efc57 --- /dev/null +++ b/demos/gtk-demo/glarea-vertex.glsl @@ -0,0 +1,8 @@ +#version 330 + +layout(location = 0) in vec4 position; +uniform mat4 mvp; + +void main() { + gl_Position = mvp * position; +} 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); |