回忆OpenGL的渲染管线,里面的顶点处理管线,和片原管线都是可以通过编程实现的。现在一般的显卡都是支持GPU编程的。GPU与CPU的区别:GPU是并行的,多管线的,所以速度一般都很快,而且GPU是矢量处理器,所以GPU编程中的变量可以有float1, float2, float3, float4等。但是CPU都是标量处理器。
Shader编程主要有两种:顶点处理器编程(Vertex Shader);片原处理器编程(Fragment Shader),虽然现在D3D10.0里面有增加了Geometry Shader.但是主要还是前两种。
Shader编程主要有几种:CG(C for Graphics), D3D中的HLSL(High Level Shading Language), 以及OpenGL中的GLSL(GL Shading Language)。
CG 简称 C for Graphics 是一种GPU编程语言,是nvidia公司推出的一种能100%发挥硬件性能的图形编程语言,其性能远远优于OpenGL和Direct3D,用它只需要几行代码就可以轻松的构造一个美丽而又复杂的三维世界,是未来图形编程的主流。详情可以访问:http://developer.nvidia.com/page/cg_main.html
这里主要介绍一下OpenGL中的GLSL编程,版本要求必须是OpenGL2.0以上,所以必须先安装glew库,然后测试一下:
#include <GL/glew.h>
#include <GL/glut.h>
void main(int argc, char **argv) {
glutInit(&argc, argv);
glewInit();
if (GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader)
printf("Ready for GLSL/n");
else {
printf("Not totally ready :( /n");
exit(1);
}
glutMainLoop();
}
shader编程中,主要是有两个文件:.vert文件, .frag文件,一个是顶点,一个是片原文件。在GLSL编程中将这两个文件以字符串的形式读取到主程序中。这里也不帖步骤了,具体详解可见: http://lighthouse3d.com/opengl/glsl/
文档可以到我的资源里下载.或者google直接搜一下:GLSL_Tutorial.doc,下载即可。