openGL教程delphi版(九).docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
openGL教程delphi版(九)

{ 欢迎进入第九课。到现在为止,您应该很好的理解OpenGL了。 『CKER:如果没有的话,一定是我翻译的罪过......』。 ( myling补充道:我的罪过更大,呵呵) 您已经学会了设置一个OpenGL窗口的每个细节。 学会在旋转的物体上贴图并打上光线以及混色(透明)处理。 这一课应该算是一课中级教程。 您将学到如下的知识:在3D场景中移动位图,并去除位图上的黑色象素(使用混色)。 接着为黑白纹理上色,最后您将学会创建丰富的色彩, 并把上过不同色彩的纹理相互混合,得到简单的动画效果。 我们在第一课的代码基础上进行修改。先在程序源码的开始处增加几个变量。 出于清晰起见,我重写了整段代码。 } Var h_RC : HGLRC; // Rendering Context(着色描述表)。 h_DC : HDC; // Device Context(设备描述表) h_Wnd : HWND; // 窗口句柄 h_Instance : HINST; // 程序Instance(实例)。 keys : Array[0..255] Of Boolean; // 用于键盘例程的数组 {下列这几行新加的。 twinkle和 tp是布尔变量, 表示它们只能设为 TRUE 或 FALSE。 twinkle用来跟踪 闪烁 效果是否启用。 tp用来检查 T键有没有被按下或松开. (按下时 tp=TRUE, 松开时 tp=FALSE).} twinkle : Boolean; // 闪烁的星星 (新增) tp : Boolean; // T 按下了么? (新增) {现在我们来创建一个结构。 结构这词听起来有点可怕,但实际上并非如此。(就是delphi的纪录类型) 一个结构使用一组简单类型的数据 (以及变量等)来表达较大的具有相似性的数据组合。 我们知道我们在保持对星星的跟踪。 您可以看到下面的就是 stars; 每个星星有三个整型的色彩值。一个红色 (r), 一个绿色 (g), 以及一个蓝色 (b). 此外,每个星星离屏幕中心的距离不同, 而且可以是以屏幕中心为原点的任意360度中的一个角度。 dist的浮点数来保持对距离 的跟踪. angle的浮点数保持对星星角度值的跟踪。 因此我们使用了一组数据来描述屏幕上星星的色彩, 距离, 和角度。 不幸的是我们不止对一个星星进行跟踪。 但是无需创建 50 个红色值、 50 个绿色值、 50 个蓝色值、 50 个距离值 以及 50 个角度值,而只需创建一个数组star。} Type stars = Record // 为星星创建一个结构,结构命名为stars r, g, b: integer; // 星星的颜色 dist: GLfloat; // 星星距离中心的距离 angle: GLfloat; // 当前星星所处的角度 End; Var star : Array[0..49] Of stars; // 使用 stars 结构生成一个包含 50个元素的 star数组 {接下来我们设置几个跟踪变量: 星星离观察者的距离变量(zoom), 我们所见到的星星所处的角度(tilt), 以及使闪烁的星星绕Z轴自转的变量spin。 loop变量用来绘制50颗星星。 texture[1]用来存放一个黑白纹理。 如果您需要更多的纹理的话, 您应该增加texture数组的大小至您决定采用的纹理个数。 } zoom : GLfloat = -15.0; // 星星离观察者的距离 tilt : GLfloat = 90.0; // 星星的倾角 spin : GLfloat; // 闪烁星星的自转 loop : GLuint;

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档