1.在应用程序中调用绘制 API ,也就是drawcall
我用vulkan ,你用gl 也一样,就是设置顶点数量为3
vkCmdDraw(drawCmdBuffers, 3, 1, 0, 0);
不用创建顶点缓冲区,这样就ok 了。
- 在glsl 的 顶点着色器里
vec2 outUV = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
gl_Position = vec4(outUV * 2.0f - 1.0f, 0.0f, 1.0f);
gl_VertexIndex 这是高版本才有的内置变量,就是顶点的索引 [0,1,2]。
经过位运算后 生成了 三个顶点
vec2(0.0,0.0),vec2(2.0,0.0),vec2(0.0,2.0)
其实和下面的写法是一样的
vec2 poitions[3] = vec2 [](vec2(0.0,0.0),vec2(2.0,0.0),vec2(0.0,2.0));
数组赋值时里面的每个元素都要有类型,否则会无法编译通过。
然后 再来二次坐标变换,我们让这三个点覆盖屏幕。
先放大两倍,再沿轴的负方向平移1.0f.
依次黑色->红色->绿色 的过程,这样就搞定了 ,要注意的是vulkan 的 y轴 在坐标系是向下的。