随笔分类 -  计算机图形学

上一页 1 2 3 4 下一页

OpenGL选择机制的一点讨论
摘要:今天上午和susu讨论了下这篇随笔中关于选择和拾取的代码,发现有下面几个问题值得思考: 1, selectBuff[BUFFER_LENGTH]是用来存放命中记录的,在选择模式下,与拾取矩阵相交的图元就会被选择命中,就会将一条命中记录写入到选择数组中,每个命中记录包括:selectBuff[0]保存命中发生时名称堆栈中的名称数目,selectBuff[1], selectBuff[2]保存... 阅读全文

posted @ 2007-08-23 21:28 Phinecos(洞庭散人) 阅读(2096) 评论(2) 推荐(0) 编辑

代码分析
摘要:这是susu给我的一份关于glut的示例代码,里面涉及到的内容有:用glut来完成菜单管理,文本显示,显示列表,材质,光照,多窗口显示,鼠标事件处理,键盘事件处理,菜单事件处理,窗口创建,缩放,销毁,动画播放,定时器等功能,运行效果如图: 我分成几个部分来对代码进行分析: 1,命令行参数检查 Code highlighting produced by Actipro... 阅读全文

posted @ 2007-08-22 17:45 Phinecos(洞庭散人) 阅读(2025) 评论(6) 推荐(0) 编辑

OpenGL中的鼠标控制
摘要:昨天在《OpenGL中的光照和键盘控制》中的代码的基础上加入了用鼠标来控制旋转,不过自己觉得思路是不正确的,纯属瞎弄。。。 为了识别出用户想要旋转的方向和角度,增加了下面的变量: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/... 阅读全文

posted @ 2007-08-14 10:31 Phinecos(洞庭散人) 阅读(4288) 评论(1) 推荐(0) 编辑

颜色干扰的问题解决了
摘要:昨天被纹理贴图的颜色干扰问题弄的很是郁闷,自己也知道OpenGL是个状态机,状态设定好后就一直是有效的,但就是想不明白后面设置的状态怎么会影响到前面呢? 在csdn上请教了高手后,终于知道问题改怎么解决了,只需要在绑定纹理前开启纹理,并且在使用完纹理后就关闭纹理,否则的话纹理就一直处于开启状态,所以会影响到不使用纹理贴图的那个物体的绘制,修改后代码如下:Code highli... 阅读全文

posted @ 2007-08-10 12:42 Phinecos(洞庭散人) 阅读(1497) 评论(1) 推荐(0) 编辑

OpenGL中的混合(Blending)
摘要:这篇是在上一篇的基础上修改而来的,对应着Nehe教程的第8课,代码仍然采用MFC框架来实现。其中InitGL需要做些修改,加入混合操作所需要的代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->BOOLCOpenGLDemoView::Init... 阅读全文

posted @ 2007-08-09 21:54 Phinecos(洞庭散人) 阅读(1470) 评论(1) 推荐(0) 编辑

OpenGL中的光照和键盘控制
摘要:这一篇基本上是从Nehe的第7课改编而来的,我将他的Win32代码改写为MFC框架下来实现。 第一个遇到的问题就是MFC窗口中如何响应键盘消息,搜索了下资料,发现只需要重载PreTranslateMessage函数就可以让窗口监听按键消息了。 BOOL COpenGLDemoView::PreTranslateMessage(MSG* pMsg) { // TODO: Add y... 阅读全文

posted @ 2007-08-09 21:19 Phinecos(洞庭散人) 阅读(2271) 评论(1) 推荐(0) 编辑

纹理贴图的干扰问题
摘要:源代码下载前几天对旋转闪屏这个问题很头疼,网上都是些Win32的demo,我又分不清它移植到MFC上到底哪里出毛病了,今天总算找到了一篇有价值的文章,分析了它的代码,发现自己以前写的那个MFC里的框架基本上是对的,旋转也是采用定时器的方式来实现的,只是在设置像素格式的时候犯了一个小错误,才导致了闪屏的现象,修改后就没有这个毛病了。 但今天又发现了一个奇怪的现象:如果要画两个物体,... 阅读全文

posted @ 2007-08-09 16:55 Phinecos(洞庭散人) 阅读(1105) 评论(3) 推荐(0) 编辑

一点小疑问
摘要:记得我第一次看Nehe教程里第9课的时候,就被他下面这段代码弄晕了: glRotatef(tilt,1.0f,0.0f,0.0f); // Tilt The View (Using The Value In 'tilt') glRotatef(star[loop].angle,0.0f,1.0f,0.0f); // Rotate T... 阅读全文

posted @ 2007-08-07 16:25 Phinecos(洞庭散人) 阅读(791) 评论(1) 推荐(1) 编辑

MFC中OpenGL旋转的问题
摘要:要求用户不干涉的情况下让物体自由旋转,这如果用win32的sdk直接来实现的话,就像Nehe的教程上那样是比较容易做的,可以在空闲事件的情况下调用绘图部分代码; Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> if (PeekM... 阅读全文

posted @ 2007-07-29 20:14 Phinecos(洞庭散人) 阅读(3605) 评论(3) 推荐(0) 编辑

一些课后思考
摘要:1,glTranslatef(-1.5f,0.0f,-6.0f);这里是被观察的物体在移动,还是视点的位置移动呢 我的理解是后者(就好像是照相机在移动位置来捕捉画面那样),默认的物体位置是屏幕中心,向左移动视图并将视图推远以便被观察的物体能进入,试着调整Z坐标的值,可以看到Z越往里面去,物体就越小,越往外面来,物体越大,这和照相机调整焦距类似。 2.使用Flat coloring(单调着色)... 阅读全文

posted @ 2007-07-29 15:48 Phinecos(洞庭散人) 阅读(1022) 评论(1) 推荐(0) 编辑

画图板---画多边形代码
摘要:源代码下载 多边形也就是由一些连续的直线组成的,所以绘图的代码还是前面的画直线的那两种算法,只不过在鼠标移动的过程中要特别注意记录终点的位置而已,代码中还是存在着bug,画多边形的时候出现了黄色的阴影线,真是奇怪的问题。为了判别是否是多边形的第一条边,加入了一个新变量:bool m_bIsFirstDone;//是否第一条边 Code highlightin... 阅读全文

posted @ 2007-07-29 14:56 Phinecos(洞庭散人) 阅读(3170) 评论(1) 推荐(0) 编辑

Nehe的OpenGL框架(MFC版)
摘要:Nehe的几个OpenGL框架都是Win32 sdk版本的,我现在需要在MFC下学习OpenGL,今天看了他写的第一个OpenGL框架,就在MFC中实现了下。为了简单起见,把全屏那部分就抛弃掉了,毕竟重点不在这上面,而且MFC要实现这个全屏的功能也不像sdk那么容易。。。 Code highlighting produced by Actipro CodeHighlighter ... 阅读全文

posted @ 2007-07-29 14:43 Phinecos(洞庭散人) 阅读(8013) 评论(6) 推荐(0) 编辑

基于MFC的OpenGL绘图
摘要:GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定 了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线程中只有一个当前RC。下面我将首先产生一个OpenGL RC并使之成为当前RC,这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。 阅读全文

posted @ 2007-07-28 20:04 Phinecos(洞庭散人) 阅读(62755) 评论(86) 推荐(15) 编辑

VC++中OpenGL的配置
摘要:一、下载并安装glut库 opengl的glut库 GLUT不是OpenGL所必须的,但它会给学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip Windows环境下安装GLUT的步骤: ... 阅读全文

posted @ 2007-07-28 16:03 Phinecos(洞庭散人) 阅读(19562) 评论(6) 推荐(4) 编辑

画图板-- 中点算法画圆
摘要:中点画圆算法的实现 阅读全文

posted @ 2007-07-28 10:30 Phinecos(洞庭散人) 阅读(8055) 评论(2) 推荐(1) 编辑

画图板--用DDA算法和Bresenham算法画直线
摘要:上一篇文章中为了简单起见,直接用了CDC的画直线功能,这几天认真研读了图形学的课本,发现书上的算法都是假定直线斜率-1SetPixel(pStart.x,i,m_lPenColor); } else { for(i=pEnd.y;iSetPixel(pStart.x,i,m_lPenColor); } re... 阅读全文

posted @ 2007-07-27 16:29 Phinecos(洞庭散人) 阅读(6508) 评论(1) 推荐(0) 编辑

OpenGL入门笔记(十一)
摘要:每个3D世界基本上可以看作是sector(区段)的集合。一个sector(区段)可以是一个房间、一个立方体、或者任意一个闭合的区间。在程序内部直接存储数据会让程序显得太过死板和无趣。从磁盘上载入世界资料,会给我们带来更多的弹性,可以让我们体验不同的世界,而不用被迫重新编译程序。另一个好处就是用户可以切换世界资料并修改它们而无需知道程序如何读入输出这些资料的。 数据文件中每个三角形都以如... 阅读全文

posted @ 2007-05-04 16:30 Phinecos(洞庭散人) 阅读(1266) 评论(1) 推荐(0) 编辑

C++ Exercises(一)
摘要:一个3D向量类 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->// Vertex3D.h: interface for the Vertex3D class./////////////////////////////////////////////... 阅读全文

posted @ 2007-04-29 16:04 Phinecos(洞庭散人) 阅读(999) 评论(1) 推荐(0) 编辑

直线的生成算法
摘要:在光栅显示器的荧光屏上生成一个对象,实质上是往帧缓存寄存器的相应单元中填入数据。画一条从(x1, y1)到(x2, y2)的直线,实质上是一个发现最佳逼近直线的象素序列,并填入色彩数据的过程。这个过程也称为直线光栅化。 直线的DDA算法 DDA是数字微分分析式(Digital Differential Analyzer)的缩写。设直线之起点为(x1,y1),终点为(x2,y2),则斜率m为: m ... 阅读全文

posted @ 2007-04-28 21:15 Phinecos(洞庭散人) 阅读(6330) 评论(5) 推荐(0) 编辑

OpenGL入门笔记(十)
摘要:要使用GLUT库,要将glut32.lib放到VC98\Lib下,将glut.h放到VC98\Include\GL下,并在程序中包含进glut.h。 #include #include GLfloat point1[] = {0.25,0.25,0.0};GLfloat point2[] = {0.75,0.25,0.0};GLfloat point3[] = {0.75,0.75,0.0};GL... 阅读全文

posted @ 2007-04-26 21:24 Phinecos(洞庭散人) 阅读(5630) 评论(1) 推荐(0) 编辑

上一页 1 2 3 4 下一页

导航