OpenGL_shader入门教程.pdf

OpenGL_shader入门教程.pdf

ID:49370325

大小:307.38 KB

页数:33页

时间:2020-03-01

OpenGL_shader入门教程.pdf_第1页
OpenGL_shader入门教程.pdf_第2页
OpenGL_shader入门教程.pdf_第3页
OpenGL_shader入门教程.pdf_第4页
OpenGL_shader入门教程.pdf_第5页
资源描述:

《OpenGL_shader入门教程.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Chapter7.OpenGLShading语言的APIARB_shader_objects,ARB_vertex_shader,和ARB_fragment_shader引入了新的API和功能用来支持使用OpenGLShadingLanguage写shader。这个API集合在本书中被称为OPENGLSHADINGLANGUAGEAPI。为了检测一个OpenGL的实现是不是支持OpenGLShading语言,可以通过调用参数为GL_EXTENSIONS的函数glGetString来获得一个字符串,检查在返回的字符串里是

2、否含有"GL_ARB_shader_objects","GL_ARB_vertex_shader",和"GL_ARB_fragment_shader"这三个子字符串来判断。这种机制也可以用来确定是系统是支持的OpenGLShading语言的版本号。如果返回的扩展字符串里含有"GL_ARB_shading_language_100",那么OPENGLSHADINGLANGUAGEAPI支持1.00版本的OpenGLShading语言。AppendixB.在这章里,我们将学习新加入的OpenGL函数(entrypoints

3、),它们用来创建、加载、编译、和连接shader,这些函数还被用来给shader传递一般的顶点属性和uniform变量。支持shader的OpenGL入口函数详细列表见附录B。在本章的最后,我们将介绍用来创建和使用第6章里的brickshader的程序代码。如果你已经等不及了,那么请先去看7.11节,然后再回来学习这些API的细节。下面是创建和使用OpenGLshader的简介:•用glCreateShaderObjectARB创建一个或多个(空的)shader对象•调用glShaderSourceARB给shader

4、提供源代码。•为每个shader调用glCompileShaderARB来编译它。•调用glCreateProgramObjectARB创建一个program对象.•通过调用glAttachObjectARB把所有的shader对象和program对象关联起来。•调用glLinkProgramARB把program对象连接起来。•调用glUseProgramObjectARB把可执行的program设置成作为OpenGL当前状态的一部分。•如果shader使用了uniform变量。如果想要对这些uniform变量进行处

5、理,需要通过调用glLinkProgramARB和glGetUniformLocationARB查询得到该变量,然后再通过glUniformARB来赋值。•如果vertexshader自定义了attribute变量,有两种方式指定该属性对应的索引值,首先可以通过在链接shader前调用glBindAttribLocationARB来设定,也可以由OpenGL自动指定,在连接后可以通过调用函数glGetAttribLocationARB来查询得到使用的索引值。顶点的一般属性(Genericvertexattributes

6、)也有两种方式送入vertexshader,第一种是通过调用glVertexAttribARB,第二种是一起调用glVertexAttribPointerARB和glEnableVertexArrayPointer,通过这些指令就可以绘制顶点数组了。7.1建立Shader对象OpenGLShading语言的API在设计的时候刻意的模仿了C/C++应用程序的开发。第一步是创建源代码,接下来代码必须通过编译,再将不同的编译模块连接到一起。最后,连接后得到的代码就可以在目标处理器上运行。为了让OpenGL支持高级shadin

7、g语言这个概念,必须提供某些结构能用来分别保存源代码、编译后的代码和可执行代码。我们定义了两个由OpenGL来管理的数据结构或者说是对象来解决这个问题。这些对象满足了存储的需求,我们为这些对象定义了一些操作,让它们有能力进行源代码的指定、编译、连接以及执行。当一个对象被创建的后,OpenGL返回这个对象的句柄(handle)。我们可以通过这个句柄来操作和查询这个对象的参数等。使用可编程硬件的第一步是创建一个shader对象。这将会创建一个由OpenGL管理的数据结构,用它来保存shander的源代码。用如下代码创建一个

8、shader:GLhandleARBglCreateShaderObjectARB(GLenumshaderType)创建一个空的shader对象,返回它的句柄。一个shader对象用来保存和维护这个shader的源代码字符串。shaderType用来指示这个被创建的shader的类型。可以两种不同类型的shader。类型为GL_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。