]> git.sesse.net Git - casparcg/commitdiff
preparing for allowing producers to supply own geometry:
authorniklaspandersson <niklas.p.andersson@svt.se>
Wed, 24 Jul 2013 09:32:36 +0000 (11:32 +0200)
committerniklaspandersson <niklas.p.andersson@svt.se>
Wed, 24 Jul 2013 09:32:36 +0000 (11:32 +0200)
* moved generation of texture coordinates for background-texture to vertex-shader
* using modelview-matrix for translations and scaling instead of manually multiplying coordinates

accelerator/ogl/image/image_kernel.cpp
accelerator/ogl/image/image_shader.cpp

index 3f77a2d07b83930bbe8f044550088319a6c8777c..482d486b14c0b65433b7caf8ba9fd3e7cc728fbd 100644 (file)
@@ -215,14 +215,19 @@ struct image_kernel::impl
 
                params.background->attach();
                
-               // Draw
-                               
-               glBegin(GL_QUADS);
-                       glMultiTexCoord2d(GL_TEXTURE0, 0.0, 0.0); glMultiTexCoord2d(GL_TEXTURE1,  f_p[0]        ,  f_p[1]        );             glVertex2d( f_p[0]        *2.0-1.0,  f_p[1]        *2.0-1.0);
-                       glMultiTexCoord2d(GL_TEXTURE0, 1.0, 0.0); glMultiTexCoord2d(GL_TEXTURE1, (f_p[0]+f_s[0]),  f_p[1]        );             glVertex2d((f_p[0]+f_s[0])*2.0-1.0,  f_p[1]        *2.0-1.0);
-                       glMultiTexCoord2d(GL_TEXTURE0, 1.0, 1.0); glMultiTexCoord2d(GL_TEXTURE1, (f_p[0]+f_s[0]), (f_p[1]+f_s[1]));             glVertex2d((f_p[0]+f_s[0])*2.0-1.0, (f_p[1]+f_s[1])*2.0-1.0);
-                       glMultiTexCoord2d(GL_TEXTURE0, 0.0, 1.0); glMultiTexCoord2d(GL_TEXTURE1,  f_p[0]        , (f_p[1]+f_s[1]));             glVertex2d( f_p[0]        *2.0-1.0, (f_p[1]+f_s[1])*2.0-1.0);
-               glEnd();
+               glMatrixMode(GL_MODELVIEW);
+               glPushMatrix();
+                       glTranslated(f_p[0], f_p[1], 0);
+                       glScaled(f_s[0], f_s[1], 1);
+
+                       // Draw
+                       glBegin(GL_QUADS);
+                               glMultiTexCoord2d(GL_TEXTURE0, 0.0, 0.0); glVertex2d(0, 0);
+                               glMultiTexCoord2d(GL_TEXTURE0, 1.0, 0.0); glVertex2d(1, 0);
+                               glMultiTexCoord2d(GL_TEXTURE0, 1.0, 1.0); glVertex2d(1, 1);
+                               glMultiTexCoord2d(GL_TEXTURE0, 0.0, 1.0); glVertex2d(0, 1);
+                       glEnd();
+               glPopMatrix();
                
                // Cleanup
                
index 047d83edf10d4b45011a1a8bc86c7d519beef8d1..f2230ede5c3085fc9c67e6c89e3e6fa1bbed1a15 100644 (file)
@@ -122,8 +122,12 @@ std::string get_vertex()
        "void main()                                                                                                                                            \n"
        "{                                                                                                                                                                      \n"
        "       gl_TexCoord[0] = gl_MultiTexCoord0;                                                                                             \n"
-       "       gl_TexCoord[1] = gl_MultiTexCoord1;                                                                                             \n"
-       "       gl_Position    = ftransform();                                                                                                  \n"
+//     "       gl_TexCoord[1] = gl_MultiTexCoord1;                                                                                             \n"
+       "       vec4 pos = ftransform();                                                                                                                \n"
+       "       gl_TexCoord[1] = vec4(pos.xy, 0.0, 0.0);                                                                                \n"
+       "       pos.x = pos.x*2 - 1;                                                                                                                    \n"
+       "       pos.y = pos.y*2 - 1;                                                                                                                    \n"
+       "       gl_Position    = pos;                                                                                                                   \n"
        "}                                                                                                                                                                      \n";
 }