OpenGL使用简介.

Slides:



Advertisements
Similar presentations
专业介绍 计算机网络技术专业(智能建筑及数字社区技术方向) 广州市广播电视大学 信息与工程学院
Advertisements

学年度工作总结 —— 上海建桥学院 —— 上海建桥学院 实验室与资产管理处 实验室与资产管理处.
主讲:王幸民 理学院计算机基础教学部.
美味料理 5223汪芮臣.
Windows7操作系统 信息工程系.
C语言程序设计 主讲教师 :张群燕 电话:
授课教师:江星玲 1.
第1单元 操作系统概论 第一节 绪论 操作系统定义.
第四章 電腦軟體 課前指引 實體的電腦裝置,我們稱之為「硬體」(Hardware),至於軟體則是個抽象的概念,軟體是經由人類以各種不同的程式語言撰寫而成,以達到控制硬體、進行各種工作的抽象化(例如文書處理)等動作。有些讀者經常迫不及買了一台新電腦,就以為可以開始使用!事實不然,一部配備齊全的電腦,如果沒有合適的軟體來控制與搭配,絕對也是英雄無用武之地。一般來說,我們將軟體分「系統軟體」(System.
Computer graphic final project report
動畫與遊戲設計 遊戲開發工具 程于芳 老師
操作系统原理 Principles of Operating System
基于虚拟现实的培训系统: 技术和案例 詹青龙 博士 教授.
基于操作系统的编程复习 张玉宏
第5章 动画 动画(animation)是运动的艺术,运动是动画的本质
计算机图形学 授课教师:陈荣钦 短号: 单位:数信学院.
基于VC++的数字图像特效处理系统的设计与实现
QT编程简介 李杨 Qt系列讲座 组织:柴树杉 1. Qt编程简介 智能仿生,柴树杉 2. 创建主窗口程序 3. Qt+VTK开发三维应用
C++程序设计 主讲:王兴波教授 1.
第ㄧ章 認識 VB 2008 與主控台應用程式 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
第一章 認識Visual C 環境架構 1-1 認識Visual C Visual Studio 概觀
计算机图形学 讲 授:董兰芳 研究方向:科学计算可视化 图形、图像处理 模式识别 中国科学技术大学 视觉计算与可视化实验室
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
陈 峦 副教授 研究院大楼316# 电子科技大学 能源科学与工程学院
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
图形化函数库及操作 叶安胜. 图形化函数库及操作 叶安胜 EasyX 库背景 Turbo C的图形函数库的使用是很简单的,可是TC 本身环境太老了。 VC ++6.0编辑和调试环境都很优秀,也有适合教学的免费版本。可惜在 VC 想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。
OpenGL常见问题.
南华大学计算机学院 软件工程系 QQ讨论群:
Installation, advance wireless module and evaluation 2008/11/11
如何在VC环境下 安装开发包 ----以EasyX举例.
第2章 Visual FoxPro 简介 Visual FoxPro概述 Visual FoxPro设计工具
R教學 安裝RStudio 羅琪老師.
3D PACMAN! Student: Chia-Wei Yao ID:
Native Development Kit
2018/12/6 中文Word2000的使用方法.
Introduction to OpenGL (1)
网络游戏开发语言基础 ——Windows程序设计
多媒體概論報告-BMP 組員名稱: 盧彥良-資料蒐集 周誠哲-資料蒐集
Introduction to OpenGL (2)
第四章 图元的属性 曾智勇 软件学院.
PROGRAM 6 Earth E. Angel.
疾病预防控制绩效考核管理软件 开发思路 & 使用说明
Instructor:Po-Yu Kuo 教師:郭柏佑
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
Window Socket 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
JAVA 编 程 技 术 主编 贾振华 2010年1月.
資料結構與C++程式設計進階班 課程大綱 講師:洪安.
Chapter 5 Attributes of Output Primitives (图元的属性)
计算机组装、维修及 实训教程 第17章 微机软件的安装与设置 2019年4月11日星期四.
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
上机环境介绍 杨斌
计算机图形学 姜明 北京大学数学科学学院 更新时间2019年4月25日星期四8时14分39秒.
Module - pyopengl 應用於2d,3d圖形繪製.
OpenGL几何变换程序.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
GLUT 事件處理函式 靜宜大學資管系 蔡奇偉 副教授
动态链接库 主讲人:孙鑫
C++程序设计 吉林大学计算机科学与技术(软件)学院.
瞻前顧後 Windows程式開發方式的重要演進
PROGRAM 7 SQUARE E. Angel.
OpenGL 基础 计算机科学与技术系.
OpenGL渲染管道与投影变换.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
How to insert glut into VC++60?
code::blocks 與GLUT 程式開發
光照模型 计算机科学与技术系.
PROGRAM 1 Simple E. Angel, Interactive Computer Graphics A Top-Down Approach with OpenGL, Third Edition Addison-Wesley Longman, 2003.
Introduction to the C Programming Language
Presentation transcript:

OpenGL使用简介

简介 OpenGL(Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。 OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。 这个接口由近二百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。在电子游戏工业里,它是颇普遍的,而另一种编程接口系统是仅用于Microsoft Windows上的Direct3D。 OpenGL常用于CAD、虚拟实境、科学视觉化程序和电子游戏开发。

发展历史 OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。1992年7月,SGI公司发布了OpenGL的1.0版本。 OpenGL历经2.0,1.5,1.4,1.3,1.2,1.1,or 1.0多个版本。现在最新的是在2006年8月3日公布的OpenGL version 2.1。 OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些特别兴趣于建立一个统一的普遍可用的API的公司组成。根据OpenGL官方网站,2002年6月的ARB投票成员包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox 、NVIDIA、SGI和Sun Microsystems (Microsoft曾是创立成员之一,但已于2003年3月退出)。

GL的平台(1) 一般来说,VC6和VS.NET里面就带有GL的基本库 所以开发者在VC下可以使用 基于OpenGL标准开发的应用程序必须运行于32位Windows 平台下,如WindowsNT或Windows95环境;而且运行时还需有动态 链接库OpenGL32.DLL、Glu32.DLL,一般在…\WINDOWS\system32里面(注:window2000以上系统均带有OPENGL32.DLL和glu32.dll) 一般来说,VC6和VS.NET里面就带有GL的基本库 VC6:…\Microsoft Visual Studio\VC98\Include\GL VS.NET.2005:…\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl 一般是Gl.h,Glaux.h,Glu.h Lib里也有:OpenGL32.lib,GLu32.lib,GLaux.lib 所以开发者在VC下可以使用 #include <gl\gl.h> // Header File For The OpenGL32 Library #include <gl\glu.h> // Header File For The GLu32 Library #include <gl\glaux.h>// Header File For The Glaux Library

GL的平台(2) 同时OpenGL也适应别的OS和语言 在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。可跟据需要下载相关的开发包。

OpenGL基本功能 模型绘制 模型观察 颜色模式的指定 光照应用 图象效果增强 位图和图象处理 纹理映射 实时动画 交互技术

一些命名规则 函数: OpenGL核心库(gl) OpenGL实用库(glu) 对X窗口系统的OpenGL扩展(glX) 举例: void glBegin(GLenum mode); void gluBeginCurve(GLUnurbs* nurb); void glXFreeContextEXT(Display * dpy, GLXContext ctx); 参数:GL_POINTS,GL_LINES,GL_LINE_STRIP,GL_LINE_LOOP,GL_TRIANGLES,GL_TRIANGLE_STRIP,GL_TRIAN,GL_QUADS,GL_QUAD_STRIP

数据类型名 void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3i(GLint x, GLint y, GLint z); void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3d(GLdouble x, GLdouble y, GLdouble z);

设置Visual C/C++ 6.0 Visual C/C++的工程有两个重要选项: Console (控制台) 和 Win32应用程序将会有两个窗口: 一个控制台窗口, 以及一个 OpenGL 窗口。选择 Win32 仍然可以让你在不需要关心Windows程序设计的情况下编写 GLUT 程序. 你需要做以下设置: 选择 Project -> settings 选择 Link 选项卡 从 Category 中选择 Output 在 Entry-point synmbol 文本框中键入 mainCRTStartup 对于已存在的控制台工程, 有一个简单的办法将它转换成Win32应用程序: 根据上面的步骤修改入口点,在 Project options 文本框中用 subsystem:windows 覆盖 subsystem:console 或者你可以直接在你的源代码开头处添加: 代码 // #pragma comment( linker,"/subsystem:\"windows\"/entry:\"mainCRTStartup\"" )

在没使用GLUT的情况下(手动添加link): 在你文件头加上 #include <gl\gl.h> #include <gl\glu.h> #include <gl\glaux.h> 进入Project菜单,选Settings项,弹出 Settings 对话框,选Link项,在 Libraries 栏目中加入OpenGL库:opengl32.lib glu32.lib glaux.lib

GLUT GLUT ( OpenGL Utility Toolkit ) 安装:在windows下通过 C/C++语言编写 GLUT 程序, 你需要以下三个文件: GLUT.H - 你需要在你的源代码中包含这个文件。通常情况下,这个文件应该放在你系统的包含目录下的 GL 文件夹中。 GLUT.LIB (SGI windows版本) 以及 glut32.lib (微软版本) - 这个文件必须被连接到你的程序中, 确保它放在 LIB 目录中。 glut32.dll (Windows) 和 glut.dll (SGI Windows版本) - 根据你所使用的OpenGL选择一个,如果你正在使用微软公司的版本,那么你必须选择 glut32.dll。你应该把DLL放置在你的系统文件夹中。 举例:在window XP下使用VC6安装GLUT 下载glutdlls并解压 复制glut32.dll和glut.dll到…\windows\system32 复制glut.h到...\Microsoft Visual Studio\VC98\Include\GL 复制glut32.lib和glut.lib到…\Microsoft Visual Studio\VC98\Lib

#include <GL/glut.h> void renderScene(void) { //绘制一个简单的二维的三角形 glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); //初始化glut glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); //设置窗口的模式-深度缓存,单缓存,颜色模型 glutInitWindowPosition(100,100); //设置窗口的位置 glutInitWindowSize(320,320); //设置窗口的大小 glutCreateWindow(“3D Tech- GLUT Tutorial”); //创建窗口并赋予title glutDisplayFunc(renderScene);//调用renderScene把绘制传送到窗口 glutMainLoop(); //进入循环等待

通过定义 void glutReshapeFunc(void ( 通过定义 void glutReshapeFunc(void (*func)(int width, int height))来避免因窗口大小改变时图形的变形; 通过定义 void glutIdleFunc(void (*func)(void)); 使应用空闲时反复调用函数func 对于window的基本应用:mouse,keyboard,menu,sub window,font等glut里也提供了支持

#include<GL/glut.h> float angle = 0.0; void changeSize(int w, int h) { if(h == 0)h = 1; float ratio = 1.0* w / h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0, 0, w, h); gluPerspective(45,ratio,1,1000); glMatrixMode(GL_MODELVIEW); gluLookAt(0.0,0.0,5.0, 0.0,0.0,-1.0, 0.0f,1.0f,0.0f); } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(angle,0.0,1.0,0.0); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glPopMatrix(); angle++; glutSwapBuffers();

void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); //设为双缓冲区, //平滑动画需要 glutInitWindowPosition(100,100); glutInitWindowSize(320,320); glutCreateWindow("Lighthouse 3D - GLUT Tutorial"); glutDisplayFunc(renderScene); glutIdleFunc(renderScene); //register a callback function to be called when the application is idle glutReshapeFunc(changeSize); //Preparing the window for a reshape glutMainLoop(); }

参考 web: specification : book: OpenGL 官方主页:http://www.opengl.org OpenGL 2.1 Reference:http://www.opengl.org/sdk/docs/man GLUT:http://www.opengl.org/resources/libraries/glut/ NEHE的在线GL教程:http://nehe.gamedev.net specification : The OpenGL Utility Toolkit (GLUT) Programming Interface (PDF) OpenGL 2.1 specification (PDF) book: OpenGL超级宝典(三版)(中文),人民邮电出版社 OpenGL编程指南(四版)(中文),人民邮电出版社 OpenGL Shading Language