ImageVerifierCode 换一换
格式:DOC , 页数:86 ,大小:226KB ,
资源ID:2992990      下载积分:15 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-2992990.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OpenGL编程.doc)为本站会员(11****ws)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

OpenGL编程.doc

1、OPENGL 编程类似 C 编程,实际接口就是 C,所以熟悉 C 是必要的 一般编程可用到的函数库包括: OPENGL 实用库:函数以 glu 开头 OPENGL 辅助库:函数以 aux 开头 Windows 专用函数库:函数以 wgl 开头 Win32API:无专用前缀 OPENGL 中有 115 个核心函数,可以在任何 OPENGL 平台上使用 OPENGL 实用库比上面这 115 个函数高一级,提供高级调用 OPENGL 辅助库本来是提供初学者入门的函数,不保证在任何平台的使用 但恰好可以在 WIN32 下使用,所以本讲座将大量引用 WIN32 下 OPENGL 编程有两个方便途径: 1

2、 使用辅助库 2 使用 C+基于消息驱动的编程 显然 1 要简单一些,入门从这里开始吧。 用之前的准备 1 首先你需要下列*.lib 包含在你的工程中: opengl32.lib glu32.lib glaux.lib 本讲座所有例子“将” 在 VC5 下调试通过,所以从 project-setting-link-general-object/libary modules 中加入上面三个*.lib (这些 LIB,VC4 以上版本已经自带,加入即可,不用在四处搜寻文件) 2 另外在你的运行程序路径下或win95system下你需要一些*.dll 动态连接库 opengl32.dll glu32

3、.dll rxddi.dll mga.drv这里我将给出一个小例子让大家熟悉用辅助库的编程结构: / GLOS.H / / This is an OS specific header file /判别操作系统的基本头文件 #include / disable data conversion warnings #pragma warning(disable : 4244) / MIPS #pragma warning(disable : 4136) / X86 #pragma warning(disable : 4051) / ALPHA / /opengl.cpp /主程序 #include

4、“glos.h“ #include #include #include “windows.h“ void main(void) /*初始化:*/ auxInitDisplayMode(AUX_SINGLE|AUX_RGBA); /窗口显示单缓存和 RGB(彩色)模式 auxInitPosition(0,0,500,500); /大小 x=500 y=500 (0, 0)是屏幕左上点 auxInitWindow(“sample1“); /窗口初始化,参数是标题 glClearColor(0.0,0.0,0.0,0.0); /将窗口清为黑色 glClear(GL_COLOR_BUFFER_BIT)

5、; /将颜色缓存清为 glClearColor 命令所设置的颜色 /即背景色 /*绘图*/ glColor3f(1.0,0.0,0.0); /选颜色(R,G,B) ,参数 0 #include #include “windows.h“ void myinit(void); void CALLBACK display(void); void CALLBACK reshape(GLsizei w,GLsizei h); /这里不用管 reshape(),只是一个用于窗口改变大小时的处理 /与绘图无关,后面会讲到 /这里的重点是 display(),请注意绘图的方法 void myinit(void

6、) /*初始化:*/ auxInitDisplayMode(AUX_SINGLE|AUX_RGBA); /窗口显示单缓存和 RGB(彩色)模式 auxInitPosition(0,0,500,500); /大小 x=500 y=500 (0, 0)是屏幕左上点 auxInitWindow(“sample1“); /窗口初始化,参数是标题 glClearColor(0.0,0.0,0.0,0.0); /将窗口清为黑色 glClear(GL_COLOR_BUFFER_BIT); /将颜色缓存清为 glClearColor 命令所设置的颜色 /即背景色 void CALLBACK reshape(G

7、Lsizei w,GLsizei h) glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w #include #include “windows.h“ void myinit(void); void CALLBACK display(void); void CALLBACK reshape(GLsizei w,GLsizei h); / void myinit(void) /*初始化:*/ auxInitDisplayMode(AUX_SINGLE|AUX_RGBA); /窗口显示单缓存和 RGB(彩

8、色)模式 auxInitPosition(0,0,500,500); /大小 x=500 y=500 (0, 0)是屏幕左上点 auxInitWindow(“sample1“); /窗口初始化,参数是标题 glClearColor(0.0,0.0,0.0,0.0); /将窗口清为黑色 glClear(GL_COLOR_BUFFER_BIT); /将颜色缓存清为 glClearColor 命令所设置的颜色 /即背景色 / void CALLBACK reshape(GLsizei w,GLsizei h) /设定视口 X Y 方向不要大于 500 单位 if(w500 if(w500 /进入世界

9、坐标系,准备变换 /必要的步骤,初始化变换矩阵步骤: 1 确定类型 2 清成单位阵 glMatrixMode(GL_PROJECTION); glLoadIdentity(); /定义一个合适的视景体 if(w=h) glOrtho(-20.0,20.0,-20.0*(GLfloat)h/(GLfloat)w, 20.0*(GLfloat)h/(GLfloat)w,-50.0,50.0); else glOrtho(-20.0*(GLfloat)h/(GLfloat)w, 20.0*(GLfloat)h/(GLfloat)w,-20.0,20.0,-50.0,50.0); /把变换结果返回视点

10、坐标系 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); / /画三棱锥,功能同上一讲 void draw(void) glBegin(GL_TRIANGLE_STRIP); glColor3f(1.0,0.0,0.0); glVertex3f(15.0,0.0,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(-15.0,0.0,0.0); glColor3f(0.0,0.0,1.0); glVertex3f(0.0,15.0,15.0); / glColor3f(0.0,1.0,1.0); glVertex3f(10

11、.0,15.0,-15.0); / glColor3f(1.0,1.0,0.0); glVertex3f(15.0,0.0,0.0); / glEnd(); / void CALLBACK display(void) /按上个例子中方法画第一个三棱锥 glClearColor(0.0,0.0,0.0,1.0); glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0,0.0,-25.0); draw(); /开始画第二个三棱锥 /变换开始,清变换矩阵为单位阵 glLoadIdentity(); /先沿 X Y Z 平移-

12、5 -10 -4,屏幕上看就是向左下移动 /Z 方向由于是平行投影,没有“近大远小” 所以看不出效果 glTranslatef(-5.0,-10.0,-4.0); /再沿 Z 轴转 90 度 glRotatef(90,0.0,0.0,1.0); draw(); /绘图工作完成,强制绘图结束 glFlush(); void main(void) myinit(); auxReshapeFunc(reshape); auxMainLoop(display); /sample ends here / 如果大家运行一下就知道上述函数的作用,无非是把物体移动、转动、变形 缩放、透视. 我想有了前 3 讲

13、,OPENGL 的基本原理已经如此了 它就是提供了一个标准的计算机图形学所使用的数学模型到显示的接口, 只要具备图形学知识,掌握 OPENGL API 函数使用,绘图很 EASY 啦 基础部分已经完毕,慢慢再来谈高级一些的绘图功能如: 纹理、光源、动画. 前面三篇文章已经把 OPENGL 的编程基本结构描述完毕。以后 会在这个基础上逐渐深化,不断增添新内容。这一篇是讲述 键盘操作和动画基础(实际还差的远哪) 。只是个简单的能 由用户控制的动画,让物体前后移动,左右旋转。是我们自 己的第一个 QUAKE!当然这个版本谁买谁上当,呵呵。 这篇的另一个目的就是加深前面对于 CALLBACK 函数的认识以 及对于变换的直观解释,任何变换你都可以从屏幕上通过自 己的操作看出来: 我只把和以前变化的部分标记中文解释

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。