Glsl 如何在gstreamer';GLS着色器元素?

Glsl 如何在gstreamer';GLS着色器元素?,glsl,shader,gstreamer,Glsl,Shader,Gstreamer,gstreamer有一个名为glshader的元素,其属性类似于fragment和vertex。该文档包括一个普通片段着色器示例,但从1.16开始,不包括顶点着色器示例 应该使用什么样的骨架来开始编写我自己的顶点着色器,以便与glshader元素一起使用?虽然文档目前不多,但您可以在中找到一个示例 看起来像 attribute vec4 a_position; attribute vec2 a_texcoord; varying vec2 v_texcoord; void main() {

gstreamer有一个名为
glshader
的元素,其属性类似于
fragment
vertex
。该文档包括一个普通片段着色器示例,但从1.16开始,不包括顶点着色器示例


应该使用什么样的骨架来开始编写我自己的顶点着色器,以便与glshader元素一起使用?

虽然文档目前不多,但您可以在中找到一个示例

看起来像

attribute vec4 a_position;
attribute vec2 a_texcoord;
varying vec2 v_texcoord;
void main()
{
   gl_Position = a_position;
   v_texcoord = a_texcoord;
}
测试着色器的良好起点是

gst-launch-1.0 gltestsrc ! glshader fragment="\"`frag_shader`\"" vertex="\"`vert_shader`\"" ! glimagesink
如果添加
v_texcoord.y*=0.8您可以演示导入着色器的几何体glshader是一个顶部带有
v=0
的矩形,这与Unity解释纹理坐标的方式相反(Unity使用v=0表示底部,除非在使用不同约定的系统上接近金属)。类似于
v_texcoord.y*=2.0的实验演示默认的包裹模式似乎是
将\u夹紧到\u边缘