unsigned

以后要是一事无成,还娶了个很龊的老婆,这些年的书都白读了啊!

导航

随笔分类 -  OpenGL

OPENGL学习笔记整理(五):着色语言
摘要:有些事情本身就是十分奇怪的。在传统上,图形硬件的设计目的是用于快速执行相同的硬编译指令集。不同的计算步骤可以被跳过,参数可以被调整,但计算本身确实固定不变的。然而,随着技术的发展,却越来越变得可以编程了。着色语言,都有些OUT了,CUDA、OPENCL什么的越来越大行其道了。当然,在这里,主要还是介绍着色语言。有些东西很新,但是却不成熟。有些东西很旧,很老土,却仍然很好用,就连OPENGL不带着色语言,现在仍然能做出很好的效果,这也是毋庸置疑的。传统的或称是旧式的OPENGL渲染管线的操作过程如下,(顶点和它们相关的属性)->(转换)->(光照)->(纹理坐标生成和转换)-& 阅读全文

posted @ 2013-09-12 16:51 unsigned 阅读(2473) 评论(0) 推荐(0)

笔试材料收集(二)——用OPENGL搞个冒泡排序,原创-_-!
摘要:冒泡排序,简单的不行,就不解释了。长久没搞OpenGL了,就弄个试试吧。受维基百科的启发,也搞个图形化的输出结果,直观易懂。#include #include #include float green = 0.0f;// Represent the color factors of green and blue, to distinguish different array memberconst int arrSize = 20;int arr[arrSize];int i = 0; //i and j are the loop variables, I make them globalin 阅读全文

posted @ 2011-10-04 14:02 unsigned 阅读(624) 评论(0) 推荐(0)

OPENGL学习笔记整理(四):几何图元渲染
摘要:近些年来,随着半导体工业的发展,GPU的性能越来越强大,但对几何图元的渲染速度的加快依然十分有限。在这里,我并不是想讨论如何改进硬件以加快速度,而是讨论OPENGL中几种几何图元的渲染方式的特点,即速度和适用环境。我把它们分成三种方式:(a)最基本的几何图元操作,所谓最基本,就是无法再细分,即这里所调用的任何一个单独的函数不能用其它的OPENGL函数或函数组合所替代。 void glVertex[234]{sifd}(TYPE coords); void glVertex[234]{sifd}v(const TYPE* coords); void glBegin(GLenum mode)... 阅读全文

posted @ 2011-02-25 21:50 unsigned 阅读(2492) 评论(0) 推荐(0)

OPENGL学习笔记整理(三):缓冲区对象
摘要:缓冲区对象对于OPENGL来说,很重要,虽然我并不经常用它,在红宝书上它属于高级话题。“在许多OPENGL操作中,我们都向OPENGL发送一大块数据,例如向它传递需要处理得顶点数组数据。传输这种数据可能非常简单,例如把数据从系统的内存中复制到图形卡。但是,由于OPENGL是按照客户机-服务器模式设计的,在OPENGL需要数据的任何时候,都必须把数据从客户机内存传到服务器。如果数据并没有修改,或者客户机和服务器位于不同的计算机(分布式渲染),数据的传输可能会比较缓慢,或者是冗余的。OPENGL 1.5版本增加了缓冲区对象(buffer object),允许应用程序显式地指定把哪些数据存储在图形服 阅读全文

posted @ 2011-02-24 15:29 unsigned 阅读(6353) 评论(2) 推荐(0)

OPENGL学习笔记整理(二):纹理知多少?
摘要:OPENGL玩了这么久,有几个地方一直比较犯晕,纹理就是其中之一。这些年,由于着色语言啊,CUDA的出现,个人感觉复杂的纹理设置可以淘汰了,至少已经处于比较边缘的地方了。还是先从最简单最基本的纹理说起吧。先把红宝书上的 ckecker.c 抄下来。#include #include #include /* Create checkerboard texture */#define checkImageWidth 64#define checkImageHeight 64static GLubyte checkImage[checkImageHeight][checkIm... 阅读全文

posted @ 2011-02-19 10:59 unsigned 阅读(1874) 评论(1) 推荐(1)

OPENGL学习笔记整理(一)
摘要:正式接触OPENGL也已经超过一年了,自我感觉已经入门了,在菜鸟中也是一只老鸟了。或者也可以自大地说OPENGL太简单了,就一个状态机而已。然而,这个状态机,我又知多少呢。撇开平台的关系,OPENGL整个程序涉及了那些函数呢。有点忘了,赶紧整理了一下。首先,我们先不是面向对象编程,还是面向过程的。虽然面向对象编程很流行了,不过对于理解最简单的OPENGL,用它就太麻烦了。int main(int argc, char* argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT.. 阅读全文

posted @ 2011-02-17 22:06 unsigned 阅读(2700) 评论(2) 推荐(0)

学习笔记草稿版——体绘制中的光学模型
摘要:体绘制中的光学模型体绘制技术的主要思路是计算数据场中的全部采样点在投影过程中对屏幕像素的贡献,在彩色图像中,对红、绿、蓝这3个彩色分量会有不同的强度I值,我们可以用光学模型来模拟计算着三个颜色不同的强度I值。光学模型是用来描述和模拟三维数据是如何产生、反射、阻挡以及散射光线的,并从而计算出全部采样点对屏幕图像最后结果的贡献,它是基于假设连续分布的三维数据场中的单元粒子具有发光、吸收、反射的特性,从而使得光线在通过三维数据场时发生变化。下面描述常见的几种光学模型,并由此得到体绘制方程和显示方程的基本原理。1.光吸收模型光吸收模型是光学模型中最简单的一种,这种模型的三维空间中的粒子可以完全吸收射入 阅读全文

posted @ 2010-08-14 12:21 unsigned 阅读(708) 评论(1) 推荐(0)

VTK + MFC Single Document
摘要:其实很弱的,VTK自带的源代码里就有这个文档,CHM格式的。vtkSIDIView.hCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//Additional or changed code is indicated in bold:// Include the required header files for the vtk classes we are using#include #include #include #include # 阅读全文

posted @ 2010-05-28 23:32 unsigned 阅读(1230) 评论(0) 推荐(1)

五彩的箱子(NEHE经典教程MFC下的实现:LESSON12)
摘要:不再多说,首先按《基于MFC的OpenGL编程》Part 2 Setting up OpenGL on Windows中的介绍,把所有该做的东西都先做好。 这一课讲的是LIST的使用,LIST是在初始化函数里面生成的,也就是说在渲染之前生成的。生成之后是不可改变的,当然,通过下文,大家应该了解到这个“不可改变”是相对的。纹理的生成、光照、颜色还是可以在调用LIST的时候使用的。LIST虽然在程序运行之初生成,但是并不是完全一层不变的东西。1.增加变量。topcol和boxcol都存储了3X5组数据,用来表示箱顶和除顶部以外的面得5种颜色。Code highlighting produced b 阅读全文

posted @ 2010-04-02 20:57 unsigned 阅读(489) 评论(0) 推荐(0)

飘动的风景画(NEHE经典教程MFC下的实现:LESSON11)
摘要:不再多说,首先按《基于MFC的OpenGL编程》Part 2 Setting up OpenGL on Windows中的介绍,把所有该做的东西都先做好。1.增加变量Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->float points[45][45][3]; // The Array For The Points On The Grid Of Our "Wave"int wiggle_count; // Counter 阅读全文

posted @ 2010-04-02 20:35 unsigned 阅读(693) 评论(0) 推荐(0)

VTK第三篇之菜鸟入门——SPHERE:VTK自带的球型的三角面片显示
摘要:VTK自带了很多的用来表示常见形状的类。这些东西虽然简单但是还是很有用的,毕竟是基础嘛。废话不多说了,直接说说代码吧。下面的代码来自C3P论坛,作者是谁,惭愧,又忘了,在这里致歉并感谢作者。在计算机里面,尤其是显示立体的东西,貌似都比较喜欢用三角形来作为最基本的元素,其中的道理我现在不懂,可能是三个点决定一个面吧。所以VTK里面的这个球体,貌似也是由三角形所组成的。1.还是先把前面的这些库贴上吧,CTRL+C、CTRL+V的时候还是很有用的。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Co 阅读全文

posted @ 2010-04-02 14:20 unsigned 阅读(5971) 评论(2) 推荐(1)

VTK第二篇之菜鸟入门——三维立体显示
摘要:先说些题外话:在C3P里面找到了一些材料,都挺不错的。下面的代码,惭愧,忘了作者是谁了。是一个很基础的三维显示。十分万分地感谢作者。首先,关于这个VTK程序的结构,较之第一篇文章,稍微有点新的认识。VTK的一些基本的东西,下面这些也是从整理的,虽然不是原创,写得还是相当好的,所以就“剽窃”了。Sources:通过这些类产生数据源,比如vtkDICOMImageReader,读取DICOM 文件,产生输出数据。第一篇里面就是vtkConeSource。Filters:Filter 是一种数据处理机制,有一个或多个输入,有一个输出。其目的是对图形图像数据进行处理,以得到期望中的数据。比如vtkMa 阅读全文

posted @ 2010-03-29 17:27 unsigned 阅读(18711) 评论(3) 推荐(1)

VTK第一篇之菜鸟入门——经典的那个圆锥例子+本人几天的感受
摘要:说到这个VTK,(⊙o⊙)…,真是悲剧,本来老板是让用OPENGL做东西的,博士师姐不知何故,提议用VTK做东西,遂老板就同意了。然后,咱的英语又不是很行,教材是英文的,所以很郁闷。看了一些,一知半解。但是不能不写程序撒,要不然永远不会。今天先把那个最小的例子贴上来,顺便说说自己对VTK运作过程的理解吧。纯属自娱自乐,请勿拍砖!呃,咱这么冷清的博客,想要人拍可能还找不到人呢。1.开篇当然是引入头文件啦,其实和OpenGL差不多,只是头文件不同罢了。在数量上倒是多了不少,复杂的程序头文件总是有一大堆的。Code highlighting produced by Actipro CodeHighl 阅读全文

posted @ 2010-03-27 21:21 unsigned 阅读(5061) 评论(2) 推荐(0)

MFC环境下实现旋转星空效果,以及在这之中遇到的一些问题。(COPY NEHELESSON9)
摘要:NEHE,估计知道OpenGL的人应该都会了解那么一些的。虽然导师让我们从OpenGL转向用VTK实现三维显示,不过这两个的原理其实差不多,因为都是基于计算机图形学的嘛。Moving Bitmaps In 3D Space,其实实现这个“旋转星空”的效果(这个是我自己命名的,哈哈)主要就是以下步骤:1.读入BMP图像,这里就是一个星星的图像;2.将其变为二维纹理;3.设置混合模式,因为BMP图像是四四方方的,要想弄出个星星的效果,必须让一部分变得透明;4.0K,接下来就是在虚拟的三维空间里,在虚拟的矩形上贴这个星星生成的二维纹理了。下面是详细的步骤说明,一起说说NEHE所使用的“算法”(姑且用 阅读全文

posted @ 2010-03-27 19:51 unsigned 阅读(1104) 评论(0) 推荐(1)

MFC下OpenGL关于Fog的练习——2
摘要:直接从我的思路开始吧,那些前期的工作就省略了,练习——1里面已经说过了。1.加入SetupFog()用于初始化代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->void COpenGLDemo20100319View::SetupFog(void){ GLfloat fogColor[4] = {0.0f, 0.25f, 0.25f,1.0f}; glewInit(); glEnable(GL_FOG); glFogi (GL... 阅读全文

posted @ 2010-03-19 19:44 unsigned 阅读(781) 评论(0) 推荐(0)

MFC下OpenGL关于Fog的练习——1
摘要:本人菜鸟,今天把红宝书上的几个opengl的例子练习了一下,关于雾的,搞来搞去,中间有些小问题,不过都解决了,当然我是在MFC下编程编写的。首先,要先感谢洞庭散人(Phinecos),如何在MFC框架下进行OpenGL编程,我就是从他的博客里边学到的。《基于MFC的OpenGL编程》系列文章,有兴趣可以去看看,比较容易上手。像往常一样,我开始联系opengl编程的话,首先打开“《基于MFC的OpenGL编程》Part 2 Setting up OpenGL on Windows”,把这里面的基本步骤先弄完。然后,拿着红宝书就开始敲代码。其实嘛,SGI网站上是有源代码的,不过初学者还是自己敲一下 阅读全文

posted @ 2010-03-19 19:22 unsigned 阅读(508) 评论(0) 推荐(0)

【求助】在OPENGL中实现三维纹理映射,自动生成坐标未完全成功
摘要:首先,从网上和红宝书书上找了些代码。凭自己的那点小经验改了改,希望能做一个颜色的立方体。即X、Y、Z各个轴分别代表RGB分量。以下是没有使用自动生成纹理坐标的方式写的,效果还不错。#define GLUT_DISABLE_ATEXIT_HACK#include #include #include #include #ifdef GL_VERSION_1_2 #define iWidth 16 #define iHeight 16 #define iDepth 16 static GLubyte image[iDepth][iHeight][iWidth][3]; static GLui... 阅读全文

posted @ 2010-03-18 11:05 unsigned 阅读(3134) 评论(4) 推荐(0)