加载中…
个人资料
实时阴影技术研究
实时阴影技术研究
  • 博客等级:
  • 博客积分:0
  • 博客访问:23,805
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

shader学习笔记(1)

(2006-04-20 01:39:10)
分类: learn skills

因为要往nsg中填加shader框架,所以从昨天开始着手学习cg,上午跟lzd问了一下传参的问题,发现了glColor设置的颜色其实只对COLOR的语义变量起作用,那DIFFUSE和SPECULAR的就不好使了,所以每次都要set一下parameter.

下边是我看到的cg使用的流程。


cg 使用流程:

  1. #ifdef __APPLE__

static CGprofile VertexProfile = CG_PROFILE_ARBVP1;

#else

static CGprofile VertexProfile = CG_PROFILE_VP20;

#endif

  1. CGContext context = cgCreateContext() ;
  2. CGProgram VertexProgram = cgCreateProgramFromFile(Context,CG_SOURCE, "vertexShader.cg",VertexProfile,NULL, NULL );
  3. if(VertexProgram != NULL)

{

/* Vertex shader only needs to be loaded once */

cgGLLoadProgram(VertexProgram);

/* Bind parameters to give access to variables in the shader */

KdParam = cgGetNamedParameter(VertexProgram, "Kd");

ModelViewProjParam = cgGetNamedParameter(VertexProgram, "ModelViewProj");

VertexColorParam = cgGetNamedParameter(VertexProgram, "IN.VertexColor");

}

  1. // 上边做一次初始化工作即可,下边是每次循环要用到的
  2. cgGLBindProgram(VertexProgram);
  3. if(KdParam != NULL)

cgGLSetParameter4f(KdParam, 1.0, 1.0, 0.0, 1.0);

if(ModelViewProjParam != NULL)

cgGLSetStateMatrixParameter(ModelViewProjParam,CG_GL_MODELVIEW_PROJECTION_MATRIX,CG_GL_MATRIX_IDENTITY);

  1. cgGLEnableProfile(VertexProfile);
  2. glBegin(GL_QUADS);

{

glNormal3fv(&CubeNormals[i][0]);

cgGLSetParameter3f(VertexColorParam, 1.0, 0.0, 0.0);

glVertex3fv(&CubeVertices[CubeFaces[i][0]][0]);

cgGLSetParameter3f(VertexColorParam, 0.0, 1.0, 0.0);

glVertex3fv(&CubeVertices[CubeFaces[i][1]][0]);

cgGLSetParameter3f(VertexColorParam, 0.0, 0.0, 1.0);

glVertex3fv(&CubeVertices[CubeFaces[i][2]][0]);

cgGLSetParameter3f(VertexColorParam, 1.0, 1.0, 1.0);

glVertex3fv(&CubeVertices[CubeFaces[i][3]][0]);

}

glEnd();

  1. cgGLDisableProfile(VertexProfile);

// 后边是收尾工作

  1. cgDestroyProgram(vertexProgram)
  2. cgDestroyContext(context);

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
前一篇:c++使用笔记
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇c++使用笔记
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有