glsl编程实例.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
glsl编程实例

直接上源码 第一步:在glsl.cpp的同级目录里,新建二个文本文件 第一个取名first.vert,在里面编写顶点着色器,代码如下: void main() { ???? gl_Position???? = ftransform(); } 第二个取名first.frag,在里面编写片元着色器,代码如下: void main() { ??? gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0); } 以上两个是最简单的着色器代码,把片元设成黄色 第二步:将下面这段程序添加到上次新建好的glsl.cpp #include stdafx.h //包含GLSL所需的头文件 #include glut.h #include glext.h static GLuint vertShader;?? //顶点着色器对象 static GLuint fragShader;?? //片元着色器对象 static GLuint glslProgram;?? //程序对象 PFNGLATTACHSHADERPROC glAttachShader; PFNGLSHADERSOURCEPROC glShaderSource; PFNGLCOMPILESHADERPROC glCompileShader; PFNGLCREATEPROGRAMPROC glCreateProgram; PFNGLCREATESHADERPROC glCreateShader; PFNGLLINKPROGRAMPROC glLinkProgram; PFNGLUSEPROGRAMPROC glUseProgram; PFNGLGETSHADERIVPROC glGetShaderiv; PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; PFNGLGETPROGRAMIVPROC glGetProgramiv; PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; //读入着色器代码 int readShaderSource(GLuint shader, const char *file) { FILE *fp; const GLchar *source; GLsizei length; int ret; glShaderSource = (PFNGLSHADERSOURCEPROC)wglGetProcAddress(glShaderSource); fp = fopen(file, rb); if (fp == NULL) { ?? perror(file); ?? return -1; } fseek(fp, 0L, SEEK_END); length = ftell(fp); source = (GLchar *)malloc(length); if (source == NULL) { ?? fprintf(stderr, Could not allocate read buffer.\n); ?? return -1; } fseek(fp, 0L, SEEK_SET); ret = fread((void *)source, 1, length, fp) != (size_t)length; fclose(fp); if (ret) ?? fprintf(stderr, Could not read file: %s.\n, file); else ?? glShaderSource(shader, 1, source, length); free((void *)source); return ret; } //输出着色器LOG void printShaderInfoLog(GLuint shader) { GLsizei bufSize; GLchar *infoLog; GLsizei length; glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)wglGetProcAddress(glGetShaderInfoLog); glGetShaderiv(shader, GL_INFO_LOG_LENGTH , bufSize); if (bufSize 0) { ?? infoLog = (GLchar *)malloc(bufSize); ?? if (infoLog != NULL) { ??? glGetShaderInfoLog(shader, bufSize, length, infoLog); ??? printf(%s\n, infoLog); ??? free(infoLog);

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档