实时阴影绘制技术研究

C++博客 首页 新随笔 联系 聚合 管理
  48 Posts :: 20 Stories :: 57 Comments :: 0 Trackbacks

shade 学习笔记( 3 )- cg openGL runtime library

  1. uniform 参数设置到 openGL 以后是保存在 CG openGL runtime 里边或者 cg core runtime 里边,而 d 3d 是直接保存到 GPU constant memory 里边。
  2. openGL 在使用 CG 的时候必须首先使用wglCreateContext() or glXCreateContext()来创建 openGL Context
  3. 设置 Uniform参数:
  • cgGLSetParameter,两种类型 float (f),double(d).
  • cgGLSetMatrixParameterfr , cgGLSetMatrixParameter dc, 四种, c 表示列向量为主, r 表示 row 向量为主。
  • cgGLSetStateMatrixParameter()可以用来设置状态矩阵,包括 ModelView 矩阵, Projection 矩阵,纹理矩阵。
  • cgGLSetParameterArray()用来设置 Uniform 的数组参数;cgGLSetMatrixParameterArrayfr用来设置矩阵数组
    设置变量参数:
  • 因为FP的变量参数是按照光栅化插值后的结果来设置的,所以只有VS程序有变量参数。
  • 设置变量参数两步:
    1. cgGLSetParameterPointer():设置变量数组,我理解就是顶点数组
    2. void cgGLEnableClientState(CGparameter parameter);和void cgGLDisableClientState(CGparameter parameter);使得该参数有效。
    • 注意:cgGLSetParameter也可以用来设置变量参数,这时采用的是openGL立即模式,也就相当于glVertex,glNormalglColor这样的做法吧,但是我想这显然是一种效率不高的做法。且cgGLGetParameter不能用来取变量参数。
    设置Sampler参数:Sampler和纹理是一一对应的,所以实际就是对一段顶点绘制指定一个纹理。
  • cgGLSetTextureParameter(CGparameter parameter,GLuint textureName);来指定一个纹理给CGParameter
  • void cgGLEnableTextureParameter(CGparameter parameter);来使纹理生效。void cgGLDisableTextureParameter(CGparameter parameter);使其失效,相当于glBindTexture命令。
void cgGLSetOptimalOptions(CGprofile profile);来使用最优的Profile。而CGbool cgGLIsProfileSupported(CGprofile profile);可以用来判断硬件是否支持该Profile

经过这几天的学习,终于大概明白了shader是怎么work的了,但是对于用programmable pipeline替换掉fixed function还是一头雾水。

 

posted on 2006-04-22 06:37 苦行僧 阅读(2068) 评论(1)  编辑 收藏 引用 所属分类: graphic

Feedback

# re: shader学习笔记(3)-cg openGL runtime library 2006-09-11 12:52 raptor
用百度搜cgGLSetMatrixParameterfr只搜到两条,中国就没几个人研究cg吗  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理