- 博客(29)
- 资源 (1)
- 收藏
- 关注
转载 DirectX视口变换矩阵详解
<br />感觉不错,转载过来,在研究PICK的时候突然觉得很有意思。(http://www.cnblogs.com/graphics/archive/2009/10/13/1582773.html)<br /><br />视口变换的矩阵求解<br />视口变换在投影变换之后,投影变换是将viewing frustum(视景体)变换为一个cuboid(立方体),如下图<br /><br /><br />关于透视投影的矩阵求解,请参考透视投影详解<br />视口变换则是将这个cuboid中的物体变换到视口中,
2010-09-02 13:12:00
1032
原创 开始新生活
<br /> 经过19天的假期(感谢李老师),自己的状态也差不多恢复了,又可以认真的学习了。<br /> 经过上学期的折腾,自己的工作做的很乱,现在该静下心来帮老师干活。这学期的目标:学习DX、HLSL、GLSL以及可视化过程,重点是了解着色语言的工作原理,了解GPU的工作结构,帮毛老师把人体热湿可视化系统做好。<br /> 干吧的,加油!
2010-08-26 16:59:00
416
原创 Windows编程笔记小结(2)
<br />(一)关于键盘<br />1、Windows和键盘驱动程序将硬件扫描码转换为格式消息,不是保存在消息队列中,而是保存在Windows在所谓的“系统消息队列”中,最后将他们放入应用程序的消息队列。<br />2、击键消息分为WM_KEYDOWN或者WM_SYSKEYDOWN、WM_KEYUP或者WM_SYSKEYUP,非系统击键消息一般指不带alt键的键消息,对所有4类击键消息,wParam是虚拟键代码,表示按下或释放的键,lParam则包含属于击键的其他数据。之所以是虚拟键代码(VK_开头,包括
2010-07-22 11:20:00
432
原创 Windows编程笔记小结
<br />1、获取设备描述表的两种方法:<br /> 第一种针对WM_PAINT消息,用BeginPaint(hwnd,&ps),EndPaint(hwnd,&ps)来实现,BeginPaint(hwnd,&ps)返回的值是设备描述表句柄,这一返回值通常保存在HDC的类型变量中;<br /> 第二种是针对键盘消息或者鼠标消息进行处理的,主要是用GetDC(整个客户去)来获取句柄,或者GetWindowDC。<br /> 至于设备描述表的用途,那是所有GDI函数都要用到,所以很重要,Begin
2010-07-21 16:35:00
475
原创 重看Windows和C++
<br /> 昨天花了一下午终于把读取OBJ文件并且显示的程序写好了,一直纠结在gelline()在读取空格时的返回值,最终无果,试过测试它的大小是0或者是1、2,最后只能转变方向,改变了一下判断逻辑,最终成功了,正如李老师所言,基于顶点的向量才是真正的向量,平滑效果好了很多。<br /> 在编程的时候,吃力了不少,对c++类的本质又忘的差不多了,还有c++的STL也搞的我有点晕,虽然最后成功实现,但都是一顿查API手册,对于本质还是不够清晰,所以打算这几天重新看一下Windows编程和c++ p
2010-07-21 10:21:00
371
原创 MFC和OpenGL的结合Wizard
<br />真是晕啊,昨天写程序写到一半实验室突然断电,刚才重新写了一般又没有传上去,唉,一波三折,重新写一遍吧。<br />1,基于对话框的OpenGL实验图:<br /> <br />2.基于单文档的OpenGL实验图:<br /> <br />3,基于多文档的OpenGL实验图:<br /> <br />实验中遇见问题最多的肯定是关于多文档的实验,由于多文档中有很多窗口需要绘制,而当前的OpenGL绘制描述表只能有一个,因此,在窗口的图形绘制完之后,必须将OpenGL绘制描述表进行释放。<br />为
2010-07-15 11:35:00
712
原创 关于半边结构的简单研究笔记
<br />半边结构由三个对象组成:顶点、半边、面,每一个对象都有指针指向其他对象,大致指向情况如下:<br />1、顶点对象:包含一个指针指向离开它的半边vertex->leaving.<br />2、半边对象:包含一个指向它离开的顶点的指针halfedge->orgin。<br /> 一个它所对应的面(左手定则)halfedge->face.<br /> 一个指向它的twins的指针,halfedge->
2010-07-12 22:52:00
2000
1
原创 初谈Python的不同一【笔记,观后感】
<br /> 懵懵懂懂的安装了Python,不为别的,只为赶点时髦,因为看见很多游戏公司都要求会一点Python或者LUA,没办法,还是多学一点好,反正闲着也是闲着。自己目前不懂LINUX,所以暂且用用WINDOWS下的吧。<br /> 入门还好入手,不是巨难,指出几点有意思的:没有基本类型了,当我安c语言语法写int x时程序出错,原理int已经是一个类了,于是改成x =int (),默认x==0了。注释不再是我们熟悉的/**/或者//了,据说是正则表达式的缘故,下了一个介绍文档,还没有仔细看,
2010-05-31 15:29:00
400
原创 关于动态链接库的笔记
<br />1.动态链接库是应用程序的一个模块,这个模块用于导出一些函数和数据供程序中的其他模块使用,包括三个方面: 动态链接库是应用程序的一部分,在本质上与可执行文件没有区别,都是作为模块被进程加载到自己的地址空间的。 动态链接库在程序编译时并不会被插入到可执行文件中,在程序运行时整个库的代码会调入内存在物理内存中只有一份库的代码,仅通过分页机制将这部分代码映射到不同的进程中<br />(PS:跟Python的模块是不是一个概念呢?)<br />2.动态链接库的入口函数是DllMain,仅供操作系统使用,
2010-05-31 14:57:00
654
原创 OpenGL关于纹理坐标s、t、r、q的遐想之一————禁止转载
通过观察试验结果,我个人认为,OpenG中当你自动生成纹理坐标的时候,有可能你指定的是以为S坐标,而绑定的是而为的图像,这时候怎么办呢?通过上面的实验图,我们发现(也是我猜测哦),t会默认去0,为了验证我的效果,那么就只设定T坐标,而不设定S坐标看看效果图吧: 是不是很像最左边一列的像素的排列,在试一下只设定S,不设定T的效果吧: 是不是有点看不清啦,这就对了,因为是最
2010-05-19 18:37:00
7811
1
原创 OpenGL关于gl_object_plane和gl_eye_plane的一些遐想————禁止转载
给定自己的图片: 分别产生object和eye ——S方向的坐标时(不指定PLANE,测试默认是(1.0,0.0,0.0,0.0)),得到的效果如图: 发现效果其实是一样的,但移动右边(eye_planex)的图,怎显示的结果如下: 现在才是揭开(eye_plane)答案与机密的时候了:其实生成的纹理坐标的(x,y,z,w)中的眼坐标是指在眼坐标系
2010-05-19 17:16:00
1847
原创 OpenGL关于转换的一些遐想--------禁止转载
前面已经讲过,OpenGL所谓的按列存储不如说是按列扫描矩阵更容易理解,因为内存中的数据还是按行的。 在做阴影贴图的时候,我们发现纹理坐标所得来的矩阵 T = bias * lightprojectmatrix * linghtmodelviewmatrix * cameramodelviewmatrix的逆 ,然后再由 T * V便得到了需要的纹理坐标。由于是坐平移和缩放,根据
2010-05-18 19:42:00
513
原创 OpenGL矩阵转置测试——禁止转载
一直没有找到很好的解释,或者解释复杂简短,还是自己动手测试一下,测试步骤如下:1.输入glTranslatef(0.1,0.1,0.0);得到的GL_MODELVIEW_MATRIX的值为: 说明变换矩阵变换的是12,13,14,15这几个变量,问题又产生了,12,13,14,15又是最后一行还是最后一列呢?2.输入 glMatrixMode(GL_MODELVIEW)
2010-05-18 18:56:00
1116
转载 ModelView矩阵的含义和应用
设OpenGL的镜头坐标系的三个轴为(R,U,N),这里的R,U,N的数值表达在世界坐标系上,表达为*行*向量.则OpenGL用gluLookAt建立的ViewMatrix为: R( U ). 即ViewMatrix的第一行为R,第二行为U,第三行为-N. -N 假设当前的ModelMatrix为单位矩阵,当我们使用glGetFloatv(GL_MODELVIEW_MATRIX, &mat),
2010-05-14 20:05:00
1425
转载 投影矩阵备忘
投影矩阵(Project Matrix)本意是将不规则的视图体(View Volume)变换成一个单位立方体,但投射到屏幕时,Z被丢弃了,所以造成了2D投影的假象.注意这是错觉,实际概念应该是投射到单位立方体空间,是空间投射的概念.需要注意的是,OpenGL最终投射到单位立方体[-1,-1,-1], [1, 1, 1],而DirectX则不是,它的投影矩阵将Z投射到[0, 1].丢弃掉Z后
2010-05-14 19:52:00
577
转载 error C2471: cannot update program database
用visual studio 2008编译时报错:error C2471: cannot update program database说相应目录下找不到vc90.pdb这个文件,但到相应目录下一看,却有这个文件,不知道这个文件出什么问题了,把它删了,再重新编译就通过了转自:http://blog.sina.com.cn/s/blog_5c4dd3330100geo4.html
2010-03-29 15:27:00
2504
原创 解答:出现0x7c812aeb处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012feb4 处的 cudaError_enum
显卡驱动版本太低,需要安装最新的驱动程序,我的显卡是GeForce 9400GT,CUDA版本是2.3,下载了比较新的支持cuda的驱动,成功解决了上面的问题,希望对大家有参考价值。
2010-03-26 10:27:00
8532
4
原创 OPENGL镜面光反射
要使物体能够根据视点的不同而看出来有光线移动的效果,我们需要加上镜面反射:由于镜面反射光的计算项=max{0,S.N}shininess*specularlight*specularmaterial,所以我们可以看出需要设置镜面反射指数GL_SHININESS,光源的镜面反射光分量以及材质的镜面反射属性: 1.材质的镜面反射光的反射率和控制亮度区域的大小的亮度: GL
2010-03-19 16:10:00
2483
原创 opengl数组索引
由于在研究模型的读取,所以仔细体会了一下OPENGL中的数组和解索引:对与GLDrawElements()中的第四个参数,应该是点的索引,所以如果你要画出模型的画,应该定义一个含两个顶点的边索引,通过画出GL_LINES来画出模型,而对于实体模型(就是要求有面信息的模型),需要法相索引和面索引两部分。
2010-03-19 15:06:00
1101
转载 QT的Graphics View柜架(3/3)
关键特性缩放与旋转QGraphicsView通过QGraphicsView::setMatrix()支持同QPainter一样的仿射变换,通过对一个视图应用变换,你可以很容易地支持普通的导航特性如缩放与旋转。下面是一个例子:class View:;public QGraphicsView{Q_OBJECT//.....public slots:void zoomIn() {scale(1.2,1.
2010-03-18 16:27:00
372
转载 QT的Graphics View柜架(2/3)
Graphics View 坐标系统Graphics View基于笛卡尔坐标系。item在场景中的位置与几何形状通过x,y坐标表示。当使用未经变形的视图来观察场景时,场景中的一个单位等于屏幕上的一个像素。在Graphics View中有三个有效的坐标系统:Item坐标系,场景坐标系,视图坐标系。为了简化你的实现,Graphics View提供了方便的函数,允许三个坐标系之间相互映射。当渲染时,Gr
2010-03-18 16:25:00
309
转载 QT的Graphics View柜架(1/3)
Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放。这个柜架也包含一个事件传播结构,对于在scene中的这些items,它具有双精度的交互能力。Items能处理键盘事件,鼠标的按,移动、释放、双击事件,也可以跟踪鼠标移动。Graphics View使用BSP树来提
2010-03-18 16:24:00
429
转载 QT_渐变填充
渐变,是指逐渐的,有规律性的变化,是一种规律性很强的现象。Qt提供了一个与渐变相关的QGradient类,目前支持三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(QRadialGradient)、角度渐变(QConicalGradient),如下图所示:从左到右依次为:线性渐变、辐射渐变、角度渐变下面来看一下实现的代码,由于程序较简单,所以将解释都加在了每
2010-03-18 16:11:00
2243
2
转载 Qt动画效果的幕后英雄:QTimeLine
其实动画的本质就是在每一定时间间隔内显示一帧图像,当这个间隔较短的时候人眼就感觉不出来了,觉得看到的是连续的影像。Qt为开发动画效果的人员提供了一个很好的时间控制类QTimeLine.QTimeLine的最简单用法是1 QTimeLine timeline=new QTimeLine(1000);2 timeLine->setFrameRange(0, 100);3 connect
2010-03-18 11:26:00
686
转载 巧用QSignalMapper分类有序地处理大量信号
QSignalMapper这个类并不是个新鲜概念, 早在Qt2里就已经存在, 而且它的功能也是始终如一。 不过由于宣传力度不够(例子里涉及到它的很少)了解这个类人可能还不是很多, 所以特此撰文介绍此类的功能和用法。 简单的理解,可以把SignalMapper这个类看成是信号的翻译和转发器, 它可以把一个无参数的信号翻译成带int参数、QString参数、QObject*参数或者QWidget*
2010-03-18 11:24:00
408
原创 QT安装成功(vs2008)
由于QT加入了对vs2008的支持,因此现在非常方便,省去了编译库部分,分三步安装:(傻瓜版)1.安装vs20082.安装qt-win-opensource-4.6.2-vs2008.exe3.安装qt-vs-addin-1.1.4.exe完成,刚开始用的4.6以前版本,安装编译时经常出错,后来特意装了VS2008,直接完成,非常完美,不到一小时搞定平台,下一步准备好好练习啦!
2010-03-04 15:24:00
485
转载 CDocument::OnOpenDocument
当用户在界面上选择文件菜单/打开文件(ID_FILE_OPEN)时,CWinApp派生类的OnFileOpen函数被自动调用,它通过文档模板创建(MDI)/重用(SDI)框架、文档和视图对象,并最终调用CDocument::OnOpenDocument来读文件,CDocument::OnOpenDocument 的处理流程如下: BOOL CDocument::OnOpenDocume
2009-12-05 14:09:00
4666
转载 MFC单文档视图穷追猛打
MFC单文档/视图结构穷追猛打目录第一章找回WinMain函数 2第二章InitApplication()函数 2第三章InitInstance ()函数 3第一节:new CSingleDocTemplate 3第二节:AddDocTemplate(pDocTemplate); 5第三节:ProcessshellCommand(cmdInfo) 5第一段AfxGetApp()->OnCm
2009-12-04 21:28:00
778
转载 对CDocManager的认识
首先有个不明白的地方,我的书上说CDocManager类是不公开的,可是我还是找到了他的类定义和实现,真搞不懂她这个不公开是什么意思??? CDocManager的定义如下: class CDocManager : public CObject { DECLARE_DYNAMIC(CDocManager) public: // Constructor CDocManager();
2009-12-04 21:26:00
2479
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人