OpenGL着色器使用流程
来源:互联网 发布:ai高版本软件 编辑:程序博客网 时间:2024/06/05 19:20
着色器使用流程
整个着色器的使用流程如下:
- 1,创建着色器对象
- 2,把源码关联到每个着色器对象
- 3,编译着色器
- 4,创建程序
- 5,关联着色器到程序对象
- 6,链接程序
- 7,激活和关闭着色器程序
- 8,删除着色器和程序
1,创建着色器对象
GLint vertSahder,fragShader;//顶点着色器,片元着色器
vertSahder = glCreateShader(GL_VERTEX_SHADER);
fragShader = glCreateShader(GL_FRAGMENT_SHADER);
2,把源码关联到每个着色器对象
//着色器源码位置
OGLTextFile vertSources("D://","vert.shader");
OGLTextFile fragSources("D://","frag.shader");
//获取源码内容
- OGLString vertText = vertSources.getText();
OGLString fragText = fragSources.getText();
//关联着色器
glShaderSource(vertSahder,1,(const GLchar **)&vertText,NULL);
glShaderSource(fragShader,1,(const GLchar **)&fragText,NULL);
3,编译着色器
glCompileShader(vertSahder);
glCompileShader(fragShader);
//这里检查编译是否成功
GLint status;
- glGetShaderiv(vertSahder,GL_COMPILE_STATUS,&status);
if(status!=GL_TRUE){
println("顶点着色器编译失败");
exit(EXIT_FAILURE);
}
- glGetShaderiv(fragShader,GL_COMPILE_STATUS,&status);
if(status!=GL_TRUE){
println("片元着色器编译失败");
exit(EXIT_FAILURE);
}
4,创建程序
GLuint program;
- program = glCreateProgram();
5,关联着色器到程序对象
glAttachShader(program,vertSahder);
glAttachShader(program,fragShader);
6,链接程序
glLinkProgram(program);
//检查是否链接错误
glGetProgramiv(program,GL_LINK_STATUS,&status);
- if(status!=GL_TRUE){
- println("程序链接失败");
exit(EXIT_FAILURE);
}
7,激活和关闭着色器程序
我们在使用着色器之前应该将着色器程序设置为活动的
glUseProgram(program);
在关闭着色器时只需要传入参数0即可
glUseProgram(0);
8,删除着色器和程序
我们在使用完毕后需要删除着色器与着色器程序,删除着色器程序对象仅仅是解除了它与着色器的关联,这些着色器仍然可以继续使用。所以我们需要在删除程序之后再删除着色器。假如我们先调用了删除着色器的方法,实际着色器并不会被删除,直到其与着色器程序的关联被解除才会被真正的删除。
glDeleteProgram(program);
glDeleteShader(vertSahder);
glDeleteShader(fragShader);
阅读全文
0 0
- OpenGL着色器使用流程
- OpenGL着色器的使用
- opengl es 3:程序使用着色器
- OpenGL中使用GLSL着色器
- OpenGL着色器的使用总结
- OpenGL中使用着色器的步骤
- opengl编程一(使用着色器)
- OpenGL——使用着色器
- opengl 独立着色器对象的使用
- OpenGL ES着色器语言之变量和数据类型和着色器流程
- OpenGL 着色器语言
- OpenGL着色器语言
- opengl顶点着色器
- OpenGL ES 着色器
- OpenGL着色器介绍
- 【OpenGL】着色器 Shader
- OpenGL--着色器
- OpenGL--着色器2
- 禁止网页使用右键
- bind DNS服务配置
- select多选框改造的双框多选框
- 调用FTPClient 的retrieveFileStream(String remote)方法后的处理
- JMS详细说明属性与应用(ACTIVEMQ)
- OpenGL着色器使用流程
- 【精品分享】Java初学者如何自学入门?
- 新闻客户端
- android学习笔记(十二)日期、时间组件
- 简要记录servlet和jquery ajax那些事吧
- 量IMOLD.v13.SP4.2.for.SolidWorks.2011-2017.Win32_64 2CD
- JavaScript概率游戏抽奖根据cookie判断是否填写资料,从而显示相关的提示;判断元素下标是否在随机生成的数组中,有即让其抽奖
- mybatis逆向工程外键映射成相应的对象解决方法
- 用图来理解Java