摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1911793到现在为止,我们有了一个画着一个白色三角形的OpenGL窗口,但一点也不激动人心。现在让我们在这节教程里,让这个三角形自己旋转起来。让我们回到main()函数,增加些额外的设置。首先告诉GLUT我们想要一个双缓冲区。双缓冲区通过在后一个缓冲区里绘画,并不停交换前后缓冲区(可见缓冲区),来产生平滑的动画。使用双缓冲区可以预防闪烁。………….glutInitDisplayMode(GL_DEPTH|GLUT_DOUBLE|GLUT_RGBA);…………接着我们要做的是告诉GLUT,当应用程序 阅读全文
posted @ 2011-09-16 11:21 杨溪 阅读(6572) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1911777下载下面的VC工程并运行它(glut0.zip)(这个就是上一节的工程)。你将看到两个窗口:一个控制台窗口,一个OpenGL窗口。现在改变窗口大小使高度与宽度不再相等,这时三角形发生变形。这会发生是因为你没有正确设置投影矩阵。默认的是透视投影矩阵且高宽比为1.因此高宽比改变了,投影就会变形。因此只要高宽比改变了,投影就应该重新计算。GLUT定义了当窗口大小改变时哪一个函数应该被调用。此外,这个函数还会在窗口初次被创建时调用,保证初始化窗口不是正方形的时候渲染也不会变形出错。这个函数是gl 阅读全文
posted @ 2011-09-16 11:19 杨溪 阅读(10569) 评论(0) 推荐(6) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1911452在这个部分我们将在我们的程序里建立一个main函数,这个main函数将完成必须的初始化和开启事件处理循环。所有的GLUT函数都有glut前缀并且那些完成一些初始化的函数有glutInit前缀。你首先要做的是调用函数glutInit()。Void glutInit(int*argc,char**argv);参数:Argc:一个指针,指向从main()函数传递过来的没更改的argc变量。Argv:一个指针,指向从main()函数传递过来的没更改的argv变量。在初始化GLUT后,我们开始定义 阅读全文
posted @ 2011-09-16 11:16 杨溪 阅读(12430) 评论(1) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1911406GLUT 代表OpenGL Utility Tookit。Mark J.Kilgard 为了使OpenGL应用程序结构能够真正独立于窗口系统构思了GLUT库。感谢GLUT,使我们可以写程序而不必去学关于X windows或者微软自己的窗口系统。Kilgard在X windows上应用这个库,后来Nate Robins把它扩展到微软的窗口系统。感谢他们,他们做的太棒了。 在这个教程里,我将给你介绍基本的使用GLUT建立一个应用程序。这个教程将不介绍如何去渲染那些比较精美的视觉场景。这是为了 阅读全文
posted @ 2011-09-16 11:14 杨溪 阅读(6888) 评论(0) 推荐(2) 编辑
摘要: 转自:http://blog.csdn.net/fioman/article/details/2578895德卡斯特里奥算法可以计算贝塞尔曲线上的点C(u),u∈[0,1]。因此,通过给定一组u的值,便可以计算出贝塞尔曲线上的坐标序列,从而绘制出贝塞尔曲线。德卡斯特里奥算法的基础就是在向量AB上选择一个点C,使得C分向量AB为u:1-u(也就是∣AC∣:∣AB∣= u)。给定点A、B的坐标以及u(u∈[0,1])的值,点C的坐标便为:C = A + (B - A) * u = (1 - u) * A + B * u。 定义贝塞尔曲线的控制点Pi编号为0i,其中,0表示是第0次迭代。当第一、二、 阅读全文
posted @ 2011-09-14 22:31 杨溪 阅读(2295) 评论(0) 推荐(1) 编辑
摘要: 今天打了六七个小时,终于把仙五打完了啊,结局好伤感…… 云凡雨柔生死相隔,龙幽小蛮人魔两界啊…… 阅读全文
posted @ 2011-09-10 21:20 杨溪 阅读(174) 评论(1) 推荐(0) 编辑
摘要: 自己写的,不免有问题,欢迎纠正。1.旋转 1 //旋转 2 int size = sqrt(p_img->width/2 * p_img->width/2 + p_img->height/2 * p_img->height/2); 3 IplImage* dst = cvCreateImage(cvSize(size*2, size*2), IPL_DEPTH_8U, 3); 4 RgbImage spin(dst); 5 6 int angle = 290; //旋转角度 7 for(int i... 阅读全文
posted @ 2011-09-10 21:17 杨溪 阅读(556) 评论(0) 推荐(2) 编辑
摘要: 貌似这两天没发东西了,想着每天都发些什么的,不过好像有些困难啊。这两天把这些弄完了,整理一下再发吧,初学者啊初学者还是需要些时间啊。 阅读全文
posted @ 2011-09-09 21:09 杨溪 阅读(180) 评论(1) 推荐(0) 编辑
摘要: 1 template<class T> class Image 2 { 3 private: 4 IlpImage *imgp; 5 public: 6 Image(IplImage* img = 0) 7 { 8 imgp = img; 9 }10 inline T* operator[](const int rowIndx)11 {12 return( (T*)(imgp ->imageData + rowIndx * imgp ... 阅读全文
posted @ 2011-09-07 20:56 杨溪 阅读(408) 评论(0) 推荐(1) 编辑
摘要: 很多场合下我们会用到纯文本编辑器,Windows自带的记事本功能很简陋,因此我们从网友的投票提名中选取了前五个最佳的文本编辑器(实际上有六个)。这些编辑器实际上主要适合程序员使用,他们的清单如下。 Notepad++(Windows) 优于Windows记事本的一个文本编辑器,完全免费且开源,对于不同的编程语言可以实现语法高亮,代码折叠以及宏,起可定制性非常强。 Emacs(所有平台) Emacs文本编辑器深受高级程序员的喜爱,具有内置的宏功能以及强大的键盘命令,这对于编辑代码来说真是一种享受,这个程序几乎被移植到了每一个平台,并有多个发行版,其中最流行的是GNUEmacs和XEm... 阅读全文
posted @ 2011-09-06 22:40 杨溪 阅读(367) 评论(0) 推荐(1) 编辑