随笔分类 -  OpenGL

摘要:这一章主要是位图的旋转以及灯光的问题,主要的效果为旋转加闪烁(在代码后面会有截图),色彩在代码中为随机生成的,所以看起来是五彩的,不过在旋转过快时会产生亮白效果。闪烁效果按键为T。同以前一样,小键盘的+和-为接近屏幕和远离屏幕。UP键和DOWN为每次增加一定的角度来翻转整个图形。 这是没有开闪烁效果 阅读全文
posted @ 2016-07-05 18:54 clairvoyant 阅读(277) 评论(0) 推荐(0)
摘要:大多数人认为GL_RGBA中的alpha通道是透明与不透明程度的,即0为完全透明,1为不透明。 The Blending equation:(Rs Sr + Rd Dr, Gs Sg + Gd Dg, Bs Sb + Bd Db, As Sa + Ad Da) s和d为下标,指定的是资源和目标像素。 阅读全文
posted @ 2016-07-05 09:23 clairvoyant 阅读(289) 评论(0) 推荐(0)
摘要:这一篇主要是对键盘和灯光的控制。 up、down、right和left控制图形的旋转方向。L控制灯光的开关,F控制灯光模糊化程度。小键盘的+和-控制图形接近屏幕还是远离屏幕。在程序的最后会有演示。 代码如下,修改部分位于双行星号内: Thanks for Nehe's tutorials, this 阅读全文
posted @ 2016-07-03 19:49 clairvoyant 阅读(227) 评论(0) 推荐(0)
摘要:第六节有几个坑。 第一个,在VS中有很多函数会报错,因为微软觉得不安全(事实如此)所以替换掉原来的函数让用他们自己的。比如在接下来的这段代码中,用到了fopen(),VS给出了fopen_s(),当然也可以继续使用原生函数,只需要在项目属性中->C/C++->预处理器->预处理定义,添加_CRT_S 阅读全文
posted @ 2016-07-03 13:48 clairvoyant 阅读(192) 评论(0) 推荐(0)
摘要:图形是旋转的。 修改部分在双行星号内。 Thanks for Nehe's tutorials, this is his home. 阅读全文
posted @ 2016-07-02 12:23 clairvoyant 阅读(230) 评论(0) 推荐(0)
摘要:图是动态旋转的。 修改部分位于双行星号内。 Thanks for Nehe's tutorials, this is his home. 阅读全文
posted @ 2016-07-01 23:37 clairvoyant 阅读(237) 评论(0) 推荐(0)
摘要:Nehe的教程确实太老了,不过我认为它也能够让我了解OpenGL3.2以前的管线渲染模式,即使它在现在已经不常见了。因为想要了解,所以我还是会看完Nehe的教程。 现在这是一个新的教程 - JoeyDeVries的教程,可以说是网上最好的OpenGL教程,现在一步一步地来学习。我会在每个新的教程标题 阅读全文
posted @ 2016-06-11 12:14 clairvoyant 阅读(251) 评论(0) 推荐(0)
摘要:一般OpenGL被认为是一个应用程序编程接口(Application Programming Interface, API),它包含了一系列可以操作图形、图像的方法。然而,OpenGL本身并不是一个API,仅仅是一个规范,由Khronos组织制定并维护。 OpenGL严格规定了每个函数该如何执行,以 阅读全文
posted @ 2016-06-11 09:55 clairvoyant 阅读(1638) 评论(0) 推荐(0)
摘要:修改部分位于星号行列之间。 Thanks for Nehe's tutorials, this is his home. 阅读全文
posted @ 2016-06-07 18:31 clairvoyant 阅读(232) 评论(0) 推荐(0)
摘要:一些用作练习的非常简单的图元。 1 #pragma once 2 #include <gl/glut.h> 3 4 class ScreenPt { 5 private: 6 GLint x, y; 7 8 public: 9 ScreenPt() { 10 x = y = 0; 11 } 12 v 阅读全文
posted @ 2016-06-06 23:45 clairvoyant 阅读(224) 评论(0) 推荐(0)
摘要:我们在建立初始显示窗口后,需要在其后改变位置与形状。窗口尺寸的改变可能改变其纵横比并引起对象形状的改变。所以GLUT库提供glutReshapeFunc(winReshapeFcn)函数。和其他GLUT函数一起放在程序的主过程中,不过该函数是在窗口尺寸输入后激活。其参数是接受新窗口高度的过程名。还可 阅读全文
posted @ 2016-06-06 13:48 clairvoyant 阅读(723) 评论(0) 推荐(0)
摘要:OpenGL显示列表(Display List)是由一组预先存储起来的留待以后调用的OpenGL函数语句组成的,当调用这张显示列表时就依次执行表中所列出的函数语句。前面内容所举出的例子都是瞬时给出函数命令,则OpenGL瞬时执行相应的命令,这种绘图方式叫做立即或瞬时方式(immediate mode 阅读全文
posted @ 2016-06-03 07:30 clairvoyant 阅读(1195) 评论(0) 推荐(0)
摘要:glBegin中的参数可以改为绘制点-GL_POINTS,也可以改为绘制线条-GL_LINES。颜色值也可以随机设定。 总体来说,就是设定一个步长,每次随机的在上下左右绘制。当到达边界时,回到初始点。 阅读全文
posted @ 2016-06-02 20:06 clairvoyant 阅读(237) 评论(0) 推荐(0)
摘要:一、OpenGL像素阵列函数:OpenGL中有两个函数可用于定义矩阵阵列的形状图案。一个是位图,另一个是像素图。 (1).OpenGL位图函数 函数中的参数width和height分别给出阵列bitmap的列数和行数。bitmap的每一元赋值为0或1。值为1表示对应像素用前面设定的颜色显示;否则,对 阅读全文
posted @ 2016-06-01 21:53 clairvoyant 阅读(1678) 评论(0) 推荐(0)
摘要:若要定义该对象的六个面需要调用六次glBegin(GL_POLYGON)或glBegin(GL_QUADS)。而且每个面的顶点顺序必须符合从立方体外部对其观察时为逆时针次序。 为了简化,OpenGL提供顶点数组,只是使用少量的函数调用。 glEnableClientState(GL_VERTEX_A 阅读全文
posted @ 2016-06-01 16:22 clairvoyant 阅读(865) 评论(0) 推荐(0)
摘要:椭圆与圆不同,不能八分只能四分。中点椭圆算法将分成两部分应用于第一象限。在斜率绝对值小于1的区域内在x方向取单位步长,在斜率绝对值大于1的区域内在y方向取单位步长。 取,可定义椭圆函数为 即决策参数。 从开始,在方向取单位步长直到区域1和区域2的界限处,然后转还为方向的单位步长,再覆盖第一象限中剩余 阅读全文
posted @ 2016-05-29 18:38 clairvoyant 阅读(4272) 评论(0) 推荐(0)
摘要:如同光栅画线算法,每步都以间隔单位取样并确定离指定圆最近的像素位置。为了减少计算量,可以将圆八分,根据Bresenham画线算法。我们首先给出点位置函数: 即可得知:(1), 位于圆边界内;(2),位于圆边界上;(3), 位于圆边界外。 第一象限中,假设在绘制了像素点,下一步需要确定绘制的位置是,还 阅读全文
posted @ 2016-05-25 18:30 clairvoyant 阅读(5027) 评论(0) 推荐(0)
摘要:一、数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法。在一个坐标轴上以单位间隔对线段取样,从而确定另一个坐标轴上最靠近线路径的对应整数值。主要是根据直线公式y = kx + b来推导出来的,其关键之处在于如何设定单位步进,即一个方向的步 阅读全文
posted @ 2016-05-24 14:59 clairvoyant 阅读(8335) 评论(0) 推荐(0)
摘要:Thanks for Nehe's tutorials, this is his home. 阅读全文
posted @ 2016-05-23 15:16 clairvoyant 阅读(195) 评论(0) 推荐(0)
摘要:1 #include <windows.h> 2 #include <gl/glew.h> 3 #include <gl/glut.h> 4 #include <cstdio> 5 #include <cstdlib> 6 #include <cmath> 7 8 void Init(void) 9 阅读全文
posted @ 2016-05-23 14:19 clairvoyant 阅读(208) 评论(0) 推荐(0)