计算机图形学

OpenGL学习

瘦欲@ 提交于 2020-03-27 09:06:06
1. 常识 static GLint vertices[] = { 25, 25, 100, 325, 175, 25, 175, 325, 250, 25, 325, 325 };//这些坐标,画的时候都是相对于屏幕右下角 PS:如果修改了窗口的内容,就需要调用glutPostRedisplay(); PS:窗口在创建的时候就发生了窗口大小的改变,所以要调用glutReshapeFunc, 可以看到每次窗口变化都调用了其中的代码 2. OpenGL简介 PS:接口包含函数700多个 PS:OpenGL也没有提供包含三维物体的高级函数,只能通过使用为数不多基本图元(点、直线、多边形)来创建 PS:OpenGL的工具库(GLU)提供了许多建模的功能,例如二次曲面以及Nurbs曲线和曲面 1.1 OpenGL对场景中图形渲染的步骤 1.创建几何图元,创建图形,建立数学描述 2.在三维空间中排列物体,并选择观察符合场景的有利视角 3.计算所有物体的颜色( 可以由 程序决定、光照和物理纹理贴图 , 或者是三者的结合 ) 4.把物体的数学描述和物体的相关颜色信息转换成屏幕上的像素 PS:OpenGL也是C/s的模式 2.1 几个简单的概念 PS:渲染,是计算机根据 模型 创建图形的过程 模型,是根据 几何图元 创建的,也叫物体 几何图元 ,包括点、直线和多边形,他们是通过顶点指定的 像素-

GPU图形绘制管线

萝らか妹 提交于 2020-03-26 07:14:59
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人”第二章。 图形绘制管线描述GPU渲染流程,即“给定视点、三维物体、光源、照明模式,和纹理等元素,如何绘制一幅二维图像”。本章内容涉及GPU的基本流程和实时绘制技术的根本原理,在这些知识点之上才能延伸发展出基于GPU的各项技术,所以本章的重要性怎么说都不为过。欲登高而穷目,勿筑台于浮沙! 本章首先讨论整个绘制管线(不仅仅是GPU绘制)所包含的不同阶段,然后对每个阶段进行独立阐述,最后讲解GPU上各类缓冲器的相关知识点。 在《实时计算机图形学》一书中,将图形绘制管线分为三个主要阶段:应用程序阶段、几何阶段、光栅阶段。 应用程序阶段,使用高级编程语言(C、C++、JAVA等)进行开发,主要和CPU、内存打交道,诸如碰撞检测、场景图建立、空间八叉树更新、视锥裁剪等经典算法都在此阶段执行。在该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线传送到图形硬件(时间瓶颈);数据总线是一个可以共享的通道,用于在多个设备之间传送数据;端口是在两个设备之间传送数据的通道;带宽用来描述端口或者总线上的吞吐量,可以用每秒字节(b/s)来度量,数据总线和端口(如加速图形端口,Accelerated Graphic Port,AGP

计算机图形学实验——利用OpenGL函数绘制五角星

风格不统一 提交于 2020-03-17 23:00:13
一、实验名称:五角星的绘制 二、实验目的:了解 OpenGL 程序设计结构,掌握编程环 三、境的设置,掌握绘制线段的方法。 四、实验内容: 1.在 VC++ 环境下 ,练习利用 OpenGL 绘制三角形的程序。 2.编程实现绘制一个五角星。(传统 OpenGL 或者 Shader) 五、实验所需基本函数 1.线段绘制 glBegin(GL_LINES);//绘制参数GL_LINES glVertex2f(30,30);//起始点坐标 glVertex2f(100,100);//终点坐标(两个为一组) glEnd(); 2.填充图像 glBegin(GL_POLYGON);//绘制参数GL_POLYGON glVertex2f(x0, y0);//顶点坐标1 glVertex2f(x1, y1);//2 glVertex2f(cx, cy);//3 glEnd(); 结果为对三个顶点组成的图像进行填充 3.绘制颜色设置 glColor3f(0.92, 0.89, 0.41);//金黄色 六、实验原理 根据小圆半径加角度算出第一个坐标 然后大圆根据半径加一个角度算出第二个点坐标,然后旋转改变角度寻找所有顶点。 代码如下: 1 void DrawStar(float cx, float cy, float R,float r,float o)//五角星中心坐标x,y,大圆半径,小圆半径

我的新书《计算机图形学基础(OpenGL版)》

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-10 05:28:40
我的新书《计算机图形学基础(OpenGL版)》今年6月份在清华大学出版社出版了!新书与原在机械工业出版社出的《计算机图形学》相比,主要有以下不同: 1.加重OpenGL的内容,每章都附有一个完整的OpenGL实例代码; 2.实验教程更新并增加了2个实验,使图形学实验上机可以有更多的灵活性; 3.更新了部分模拟题; 4.增加了一章内容简单介绍动画(第10章); 5.在第一章绪论中,对图形学的内容体系做了一些阐述,希望能让读者对图形学有一个更好的整体认识。 为便于老师和同学们的学习、使用,我会将本书所附的实验教程与模拟试题全部共享到本博客上。 附新书封面如下: 新书购买链接: 1.京东,34.10元: http://item.jd.com/11478526.html?utm_source=p.yiqifa.com&utm_medium=tuiguang&utm_campaign=t_1_433980&utm_term=78e4a6acdf7d4b31bd310144f93d455f 2.卓越,34.30元: http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6%E5%9F%BA%E7%A1%80-%E5%BE%90%E6%96%87%E9%B9%8F/dp/B00KV32U8G/ref

OpenGL学习之旅(二)——计算机图形学学习笔记

房东的猫 提交于 2020-03-06 01:22:16
OpenGL图形开发入门笔记 前篇我们完成了OpenGL的环境搭建,在进入OpenGL编程之前,我觉得有必要对计算机图形学的基础理论进行一下简单的学习和梳理。为此,本文借助《OpenGL编程精粹》进行归纳学习和整理。 01 点 点是图形中最基本的几何对象。一般的,利用直角坐标系表示来确定物体在屏幕中的位置。坐标系分为左手坐标系、右手坐标系。OpenGL采用右手系。 重点内容 2D坐标(X,Y) 2D的距离公式 3D坐标(X,Y,Z) 3D的距离公式 02 向量 标量是个表示数量大小的值,区别于标量,向量是个既有方向又有大小的量。 2.1向量的大小 即向量的长度或模。 2.2向量的归一化 求一个向量的单位向量的过程,叫做向量的归一化。 2.3向量的四则运算 加减:加减要注意向量的维数必须相同,对应分量加减运算即可。 向量点乘(也称作内积) :对应分量乘积的和;点乘的结果描述了两个向量的相似程度,结果越大两个向量越越近。 向量叉乘(也称作叉积) :仅可用于3D场景,和点乘不太一样的是,叉乘之后得到一个新的向量,为此,叉乘运算在3D图形学上可用于诸多领域,例如碰撞检测、光照和物理计算等,运算常采用后面所说的矩阵运算。 03 矩阵 矩阵是3D数学的重要基础,对于坐标系的转换和物体的变换都要用到矩阵 OpenGL涉及的内容有 3.1几个常用的矩阵概念 方阵 行数和列数相同的矩阵。 对角矩阵

计算机图形学学习手记(一)——入门

ⅰ亾dé卋堺 提交于 2020-03-05 17:10:36
在不了解计算机图形学的情况下,Shader看着实在太累了。还是精补下这方面的知识,以此把我学习手记也记下来,大家有志学习这方面的也可以一起交流。主要学习资料为清华大学CAD工程中心的一个电子书。CSDN上有,在此就不贴出链接了。 一、关于其研究的领域 1.图形的分类:线条为本的图,用于一些工程上的制图。 明暗图,具有真实感的图形。 计算机图形则是主要针对明暗图。 2.图形与图像的区别:图像在计算机中指以Bitmap形式存在的灰度信息,而图形除了这些,还有一些几何属性,和一些景物的物理属性。 3.相关研究领域: 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 4.相关大会:ACM SIGGRAPH:是 由Brown 大学的教授Andries van Dam (Andy) 和IBM公司的Sam Matsa在上世纪60年代发起的。全称是“the Special Interest Group on Computer Graphics and Interactive Techniques”。这个 会议是计算机图形学最权威的国际会议。 总的来说。计算机图形学,着力于将现实生活或工作的场景抽象起来,然后通过某些计算模型及相关算法,在计算机上仿真出来。这样就可以衍生出各个方面

HTML5 Canvas中的贝塞尔曲线

本小妞迷上赌 提交于 2020-03-05 17:06:06
  在HTML5提供的画布功能,也就是Canvas中,getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。本文以getContext("2d")中提供的方法为例,简要研究了其中用于绘制曲线路径的贝塞尔曲线。   JavaScript中的getContext("2d")为我们提供了两种绘制贝塞尔曲线路径的方法,分别是quadraticCurveTo()用于绘制二次贝塞尔曲线和bezierCurveTo()用于绘制三次贝塞尔曲线。 什么是贝塞尔曲线? 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线,是计算机图形学中相当重要的参数曲线。 贝塞尔曲线由线段与节点组成,控制其中的节点,便能控制曲线的路径。具体的参数方程如下: (1)线性公式 给定点P 0 、P 1 (可理解为曲线的起点和终点),线性贝兹曲线只是一条两点之间的直线段。公式如下: 其长度等于两点间线段的长度。 (2)二次方公式    二次方贝塞尔曲线的路径由给定点P 0 、P 1 、P 2 (可分别理解为起点、控制点和终点)的函数B(t)追踪: (3)三次方公式   P 0 、P 1 、P 2 、P 3 四个点在平面或在三维空间中定义了三次方贝兹曲线。曲线起始于P 0 走向P 1 ,并从P 2 的方向来到P 3 。一般不会经过P 1 或P

opengl es 学习

前提是你 提交于 2020-03-05 12:28:00
http://blog.csdn.net/lpt19832003/archive/2010/03/03/5342070.aspx 1、学习网站 官方网站 http://www.khronos.org/opengles/ 最经典的Nehe 学习网站 http://nehe.gamedev.net/ 中文的Nehe 学习网站 http://www.owlei.com/DancingWind/ GLUT 的下载网站 http://www.opengl.org/resources/libraries/glut/ redbook 源代码的下载网站 http://opengl-redbook.com/ 2、学习书籍 官方出的《OpenGL 编程指南》,也称红宝书,最经典的书了,入门必读。 计算机图形学(OpenGL版) 3、开源库: Mesa 3D :类OpenGL klimt :类OpenGL, 函数不全, Linux X11 vincent :OpenGL ES 库,函数比较全,WinCE 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lpt19832003/archive/2010/03/03/5342070.aspx 来源: https://www.cnblogs.com/leaven/archive/2010/11/30/1892147.html

[计算机图形学] OpenGL读取obj文件并显示其3D效果

。_饼干妹妹 提交于 2020-03-04 07:49:53
 读取三维网格模型(Wavefront OBJ文件) 无法向立方体:cube.obj 有法向兔子模型:bunny.obj 有法向有纹理八字模型:Eight.obj OBJ文件的格式可参考: http://www.cnblogs.com/youthlion/archive/2013/01/21/2870451.html  利用OpenGL显示该模型的绘制效果(全部) 顶点显示 线条显示 面片显示  核心代码说说 1、下面的点、纹理、法向量、面用于构成一个PIC的类,PIC用于存储从OBJ文件中读取的3D图形的信息: 1 struct POINT3{ 2 double X; 3 double Y; 4 double Z; 5 }; 6 struct WenLi{ 7 double TU; 8 double TV; 9 }; 10 struct FaXiangLiang{ 11 double NX; 12 double NY; 13 double NZ; 14 }; 15 struct Mian{ 16 int V[3]; 17 int T[3]; 18 int N[3]; 19 }; 20 class PIC 21 { 22 public: 23 vector<POINT3> V;//V:代表顶点。格式为V X Y Z,V后面的X Y Z表示三个顶点坐标。浮点型 24

VS2008中opengl配置

只谈情不闲聊 提交于 2020-03-01 03:12:24
OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。 1、与C语言紧密结合。 OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。 2、强大的可移植性。 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关。 3、高性能的图形渲染。 OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。 总之,OpenGL是一个很NB的图形软件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。 OpenGL官方网站(英文) http://www.opengl.org/ 下面将对Windows下的OpenGL编程进行简单介绍。 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual