GPU Tips(收集和整理)

来源:互联网 发布:中电科大数据院贵州 编辑:程序博客网 时间:2024/06/05 22:44

 1. glMultiMatrix是右乘,比如:
    glLoadMatrix(&m1);
    glMultiMatrix(&m2);
    相当于:m1 * m2.
2. GLSL的vec4有3种分量形式xyzw/rgba/stpq, 注意到的r分量是指颜色r分量, 习惯上的纹理坐标分量strq的r由于和颜色r冲突,改作p.
3. GLSL可以只有PixelShader, 没有Vertex Shader, HLSL不支持. 
    vs_3_0 shader executed in hardware vertex processing mode can only be paired with at least a ps_3_0 shader.
4. GLSL的1.2版本开始支持mat4x3这种non-square矩阵,要注意4x3是4列3行,而不是4行3列.
注:2,3,4条来源于http://www.cnitblog.com/linghuye/archive/2008/01/29/39451.aspx
5. 在GLSL 1.10版本,当程序链接成功时,所有的uniform的默认值为0;在1.20版本所有uniform(除了sampler),都可以有一构造器,像这样:
       uniform vec3 color = vec3(0.7, 0.7, 0.2);
    无构造器的所有uniform其默认值均为0.
6.

Try passing data as attributes rather than
uniforms

Changing uniforms sometimes have a setup cost

 

 

尽量以attribute而非uniform来传递数据,因为改变uniform有时会有setup的开销。
7. 使用FBO时,如果在attach一个color buffer时没同时attach一个depth buffer,那么将场景渲染到该color buffer时,是不会进行depth test的(可以认为每个fragment都会通过depth test);要想能进行depth test,必须为FBO attach一个depth buffer.
8. 要使用GLSL 1.20版本,则在开头加上:#version 120
9. 要使用Geometry Shader,则在开头加上:#extension GL_EXT_geometry_shader4 : enable
10. HLSL的VS的FOG语义是用来实现顶点雾的(Vertex Fog),其值类型是float(在0.0~1.0范围内): fog = length(FogEnd - VertexPos) / length(FogEnd - FogStart)

原创粉丝点击