游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1596|回复: 2

闲来准备翻译GLSL的书~~下面是7.1章,如果大家觉得不错我就

[复制链接]

13

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2006-3-10 20:13:00 | 显示全部楼层 |阅读模式
GLSL 7.1

Creating Shader Objects

使用GLSL的API类似编写C\C++程序:编写源代码,编译,链接,最后运行。

那么,在传统的GL中我们如何实现这个过程呢?首先必须要能储存源代码,编译代码与可执行的代码呀。我们定义了二种新的GL对象,并提供了相关的操纵方法,实现类似编写C\C++程序的过程。当生成这样的一个对象时,GL就返回一个它的句柄以供我们操作。

生成shader是驱动可编程图形引擎的第一步。这将成一个存有源代码的结构。创建一shader对象的函数是:
GLhandleARB?glCreateShaderObjectARB(GLenum?shaderType
生成了一个空shader对象,返回它的句柄。shaderType有二种,GL_VERTEX_SHADER_ARB与GL_FRAGMENT_SHADER_ARB。GL_VERTEX_SHADER_ARB用来代替传统的顶点处理管线,类似,GL_FRAGMENT_SHADER_ARB用来代替传统的象素处理管线。
生成这样的对象后,该提供我们辛苦编写的代码了。代码其实是就一字符数组,可以是在程序里自定的字符数组,也可以是外部文本文件。函数如下。
void?glShaderSourceARB(GLhandleARB?shader,?
???????????????????????GLuint?nstrings,?
???????????????????????const?GLcharARB?**strings,?
???????????????????????GLint?*lengths)
先解释一下各个参数。GLhandleARB,即前面生成的那个对象。nstrings,指定了被传递进来的字符数目,当然应当等于strings的大小。strings,指定代码来源。*lengths,如果是null或小于0,GL认为字符串以null结束,若传递了一个有效指针,则其中的数字限制着字符串中的长度。一般都是NULL。现在,我们仅仅只是拷贝字符到shader对象里去,函数返回后,可以立刻自由的操作源字符数组,修改,释放内存。
这个接口提供了一些有趣的特性,仿照了C程序的特征,如#define宏操作,#include包含等等。
____________________________________________________
如果大家觉得小生文笔还可以我就继续了

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-3-10 20:25:00 | 显示全部楼层

Re:丫的~~在学校没有是事情干~~闲来准备翻译GLSL的书~~下面


不过:
“void?glShaderSourceARB(GLhandleARB?shader,?
???????????????????????GLuint?nstrings,?
???????????????????????const?GLcharARB?**strings,?
???????????????????????GLint?*lengths)
”这个是什么意思?

13

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2006-3-11 10:08:00 | 显示全部楼层

Re:闲来准备翻译GLSL的书~~下面是7.1章,如果大家觉得不错

这个~~~从PocketPC上转换WORD文本有问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 21:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表