本文主要是介绍GPU编程之GLSL(三)——Opengl与着色器通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本节通过一个实例代码,来讲一下Opengl与着色器通信的问题:
本节只显示在前一节的基础上添加的代码
1、添加全局变量
GLint time_id;
2、在display()函数中的 a+=0.1;后边添加
glUniform1f(time_id,a);
目的:使time_id随着a一起变化
3、在 setShaders()函数最后添加
time_id=glGetUniformLocation(p,"v_time");
目的:为uniform变量获取了一个标识符,即将opengl中的time_id与片段着色器的v_time绑定
4、片段着色器代码改为:
uniform float v_time;void main()
{float fR=0.9*sin(0.0+v_time*0.05)+1.0;float fG=0.9*cos(0.33+v_time*0.05)+1.0;float fB=0.9*sin(0.67+v_time*0.05)+1.0;gl_FragColor = vec4(fR/2.0,fG/2.0,fB/2.0,1.0);
}
参考文献:
仇德元.《GPGPU编程技术——从GLSL、CDPU到OpenGL》[M].河北省三河市:机械工业出版社,2012年:323.
这篇关于GPU编程之GLSL(三)——Opengl与着色器通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!