OpenGL中使用Shader的基本步骤

在OpenGL中,创建和使用Shader的基本步骤如下:

1、通过glCreateShader创建一个或多个着色器对象:

2、使用glShaderSource加载着色器的源代码,和着色器对象关联;

3、glCompileShader编译每个着色器对象

4、使用glCreateProgram创建程序对象

5、通过glAttachShader将所有着色器对象绑定到程序对象上;

6、glLinkProgram链接程序对象;

7、调用glUseProgram使用着色器程序对象,使得着色器可执行程序成为OpenGl当前状态的一部分。

时间: 2024-10-20 18:51:10

OpenGL中使用Shader的基本步骤的相关文章

GLSL 在OpenGL中向shader传递信息【转】

http://blog.csdn.net/hgl868/article/details/7872219 引言 一个OpenGL程序可以用多种方式和shader通信.注意这种通信是单向的,因为shader的输出只能是渲染到某些目标,比如颜色和深度缓存. OpenGL的部分状态可以被shader访问,因此程序改变OpenGL某些状态就可以与shader进行通信了.例如一个程序想把光的颜色传给shader,可以直接调用OpenGL接口,就像使用固定功能流水线时做的那样. 不过,使用OpenGL状态并不

OpenGL中的Shader

http://blog.csdn.net/huangcanjun187/article/details/52474365 学习总结自:http://learnopengl.com/#!Getting-started/Hello-Triangle http://learnopengl.com/#!Getting-started/Shaders 继上篇文章中提到,OpenGL是为了在GPU上同时跑成千上万个程序,在GPU上跑的这些小程序,称为Shader. 准备 我们在运行GPU程序前,得准备几样东

OpenGL中使用着色器

OpenGL中使用GLSL着色器步骤 GLSL既适用于顶点着色器,也适用于片段着色器. 使用着色器对象的步骤: 1.创建着色器对象: GLuint glCreateShader(GLenum type); //创建一个着色器对象,type值必须是GL_VERTEX_SHADER或GL_FRAGMENT_SHADER.error返回0 2.把着色器的源码与着色器对象相关联: glShaderSource(GLuint shader, GLsizei count, const GLChar** st

cocos2dx(3.X)中使用shader

原文链接:http://blog.csdn.net/xufeng0991/article/details/47256583 一 shader的基本概念 1 什么是shader shader即着色器,就是专门用来渲染3D图形的一种技术. 通过shader,可以自己编写显卡渲染画面的算法,使画面更漂亮.更逼真. 2 shader分类 shader又分两种,一种是顶点shader(3D图形是由三角形组成的,顶点shader就是计算顶点位置,并为后期像素渲染做准备的), 另一种是像素shader,就是以

OpenGL中glVertex、显示列表(glCallList)、顶点数组(Vertex array)、VBO及VAO区别

OpenGL中glVertex.显示列表(glCallList).顶点数组(Vertex array).VBO及VAO区别 1.glVertex 最原始的设置顶点方法,在glBegin和glEnd之间使用.OpenGL3.0已经废弃此方法.每个glVertex与GPU进行一次通信,十分低效. glBegin(GL_TRIANGLES); glVertex(0, 0); glVertex(1, 1); glVertex(2, 2); glEnd(); 2.显示列表(glCallList) 每个gl

openGL中的混合

    之前在项目中就使用过混合,但是研究的不深入,近期美术的一个需求让我下决心重新深入的研究了一下混合以及它在cocos2d-x中的使用,在这里分享给大家. 混合(blend,有些翻译书上把它称作混融,以下简称混合),在openGL中,当一个输入的片元通过了所有相关的片元测试,就可以在与颜色缓存中当前的内容通过某种方式进行合并了.最简单的,也是默认的方式,就是直接覆盖已有的值,实际上不能称作是合并.除此之外,我们也可以将帧缓存中已有的颜色与输入的片元颜色进行混合.这是在openGL流程上的定义

Assignment 4 OpenGL中正十二面体追踪球实现(平移、旋转、多面体线框体切换)

一.使用平台    windows  8.1     visual  studio  2012    二.使用方法     鼠标左键控制旋转,鼠标右键控制平移,点击鼠标中键出现菜单可选多面体 或线框体绘制.     键盘↑↓←→控制平移,F1 和 F2 键分别为多面体和线框体绘制的切换.  三.实现简述     主函数  在 main 函数中与这次实验相关的主要有以下几个函数:  glutReshapeFunc(myReshape);  //窗口改变时重新设

OpenGL中实现双缓冲技术

在OpenGL中实现双缓冲技术的一种简单方法: 1.在调用glutInitDisplayMode函数时, 开启GLUT_DOUBLE,即glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);.这里将我们惯用的GLUT_SINGLE替换为GLUT_DOUBLE,意为要使用双缓冲而非单缓冲. 2. 调用glutDisplayFunc(display)注册回调函数时, 在回调函数中所有绘制操作完成后调用glutSwapBuffers()交换两个缓冲区指针. 3. 调用

什么是OpenGL中的深度、深度缓存、深度测试?

原文来自http://blog.csdn.net/xiaoquanhuang/article/details/6613705 1)直观理解 深度其实就是该象素点在3d世界中距离摄象机的距离,深度缓存中存储着每个象素点(绘制在屏幕上的)的深度值!深度测试决定了是否绘制较远的象素点(或较近的象素点),通常选用较近的,而较远优先能实现透视的效果!!! 2)Z值(深度值).Z buffer(深度缓存) 下面先讲讲Z坐标.Z坐标和X.Y坐标一样.在变换.裁减和透视除法后,Z的范围为-1.0~1.0.Dep