[gtk+] demo: Move the GLSL shaders to resources
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] demo: Move the GLSL shaders to resources
- Date: Mon, 9 Feb 2015 19:18:03 +0000 (UTC)
commit 3b4bf963f60cbf40c9c69f8c50f1358a7ccc46b5
Author: Emmanuele Bassi <ebassi gnome org>
Date: Mon Feb 9 16:27:44 2015 +0000
demo: Move the GLSL shaders to resources
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
demos/gtk-demo/Makefile.am | 2 ++
demos/gtk-demo/demo.gresource.xml | 4 ++++
demos/gtk-demo/glarea-fragment.glsl | 9 +++++++++
demos/gtk-demo/glarea-vertex.glsl | 8 ++++++++
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 145c98a..183d109 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 d861199..e0e294d 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 0000000..aaa7305
--- /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 0000000..163f6ef
--- /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 548c75f..fd63e86 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]