背景:
本篇文章主要偏向理论知识的讲解,实践方面后期会进行讲解。opengl的渲染管线中,如果接触3D渲染不多情况下,比如经常做视频滤镜或视频渲染显示的话,经常接触的两个部分就是顶点着色器、片段着色器。如果是做视频渲染的话,这两部分的内容也特别简单,总共也就十几行代码。我们可以从很多地方去摘抄相机流+OpenGL实现渲染的代码,通过把不同地方的滤镜摘抄过来替换掉,就可以实现各种各样的视频滤镜特效了。但当有人问题OpenGL顶点着色器是用来干啥的?OpenGL渲染管线有哪几个步骤?OpenGL每个步骤都分别有什么作用的时候?可能就一脸懵逼的状态。这边文章就是让你更深度的了解OpenGL管线内部如何把你的数据一步一步的渲染到屏幕上的。
顶点着色器:
attribute vec4 aPosition;
attribute vec2 aTextureCoord;
varying vec2 vTextureCoord;
void main() {
gl_Position = aPosition;
vTextureCoord = aTextureCoord;
}
片段着色器:
precision mediump float;
varying vec2 vTextureCoord;
uniform sampler2D sTexture;
void main() {
gl_FragColor = texture2D(sTexture, vTextureCoord);
}
OpenGL3.0 渲染管线
OpenGL3.0的渲染管线的总体管线流程图:
<