diff pytouhou/ui/shaders/eosd.py @ 394:346614f788f1

Replace gl{Vertex,TexCoord,Color}Pointer with the more modern glVertexAttribPointer.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Wed, 06 Feb 2013 20:57:16 +0100
parents 74471afbac37
children 3ce4065840e9
line wrap: on
line diff
--- a/pytouhou/ui/shaders/eosd.py
+++ b/pytouhou/ui/shaders/eosd.py
@@ -21,22 +21,32 @@ class GameShader(Shader):
         Shader.__init__(self, ['''
             #version 120
 
+            attribute vec3 in_position;
+            attribute vec2 in_texcoord;
+            attribute vec4 in_color;
+
             uniform mat4 mvp;
 
+            varying vec2 texcoord;
+            varying vec4 color;
+
             void main()
             {
-                gl_Position = mvp * gl_Vertex;
-                gl_FrontColor = gl_Color;
-                gl_TexCoord[0] = gl_MultiTexCoord0;
+                gl_Position = mvp * vec4(in_position, 1.0);
+                texcoord = in_texcoord;
+                color = in_color;
             }
-        '''], [ '''
+        '''], ['''
             #version 120
 
+            varying vec2 texcoord;
+            varying vec4 color;
+
             uniform sampler2D color_map;
 
             void main()
             {
-                gl_FragColor = texture2D(color_map, gl_TexCoord[0].st) * gl_Color;
+                gl_FragColor = texture2D(color_map, texcoord) * color;
             }
         '''])
 
@@ -46,33 +56,41 @@ class BackgroundShader(Shader):
         Shader.__init__(self, ['''
             #version 120
 
+            attribute vec3 in_position;
+            attribute vec2 in_texcoord;
+            attribute vec4 in_color;
+
             uniform mat4 model_view;
             uniform mat4 projection;
 
+            varying vec2 texcoord;
+            varying vec4 color;
             varying float fog_density;
 
             void main()
             {
-                gl_Position = model_view * gl_Vertex;
-                gl_FrontColor = gl_Color;
-                gl_TexCoord[0] = gl_MultiTexCoord0;
+                vec4 position = model_view * vec4(in_position, 1.0);
+                texcoord = in_texcoord;
+                color = in_color;
 
-                float fog_position = -gl_Position.z / gl_Position.w;
+                float fog_position = -position.z / position.w;
                 fog_density = clamp((gl_Fog.end - fog_position) * gl_Fog.scale, 0.0f, 1.0f);
 
-                gl_Position = projection * gl_Position;
+                gl_Position = projection * position;
             }
-        '''], [ '''
+        '''], ['''
             #version 120
 
+            varying vec2 texcoord;
+            varying vec4 color;
+            varying float fog_density;
+
             uniform sampler2D color_map;
 
-            varying float fog_density;
-
             void main()
             {
-                vec4 color = texture2D(color_map, gl_TexCoord[0].st) * gl_Color;
-                gl_FragColor = mix(gl_Fog.color, color, fog_density);
-                gl_FragColor.w = color.w;
+                vec4 temp_color = texture2D(color_map, texcoord) * color;
+                gl_FragColor = mix(gl_Fog.color, temp_color, fog_density);
+                gl_FragColor.a = temp_color.a;
             }
         '''])