
图形开发
文章平均质量分 62
rabbit729
这个作者很懒,什么都没留下…
展开
-
法线变换
可以用单个矩阵对点、线、多边形和其他几何图形进行一致性变换。除此之外,还可以对线或多边形表面上的向量进行变换,但是却无法对表面法线(也可以是顶点的光照法线)这样一个非常重要的几何特征性进行变换。法线必须通过用来变换几何图形的逆矩阵的转置矩阵进行变换。因此,如果变换几何图形的矩阵为M,那么必须用下面的矩阵N来变换该几何图形的法线: N = (M-1)T原创 2010-11-28 12:25:00 · 2777 阅读 · 0 评论 -
如何调试DirectX3D程序
转载地址:http://www.cnblogs.com/minggoddess/archive/2011/06/16/2082970.html如果安装了DirectX SDK,就可以通过SDK中的DirectX Control Panel来设置调试选项,这个工具位于开始-程序-Microsoft DirectX SDK(June 2010)-DirectX Utilities中,也可以在SDK的安转载 2012-09-11 17:22:47 · 3764 阅读 · 0 评论 -
RGB、YUY2、YUYV、YVYU、UYVY与AYUV
最近项目中用到了好多YUV格式相关的东西,在网上找了一些资料,整理如下:计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red)、G(Green)、B(Blue)相加混色的原理:通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。这种色彩的表示方法称为RGB色彩空间表示(它也是多媒体计算机技术中用得最多的一种色彩空间表示方法)。根据三基色原理,任意一种色光转载 2012-08-05 16:09:28 · 17464 阅读 · 1 评论 -
教你认识显卡
原帖地址:http://www.guokr.com/blog/195840/?replypage=2#comments 我们选购电脑时,都希望能在不多花冤枉钱的前提下,买到性能最好的。而最终决定电脑性能无非就是CPU、显卡、主板、内存。其中尤以前两者为要,而在CPU与显卡中,尤以后者最为惑人。各种公版、升级版、阉割版层出不穷,下游厂商也是变着花样的玩概念,有强调显存的、有吹嘘PCB厚度转载 2012-05-25 17:30:35 · 2405 阅读 · 1 评论 -
泰坦尼克号是怎么从2D转成3D的?
一篇介绍2D转3D不错的文章,特转帖,原帖地址:http://www.guokr.com/article/145897/4月10号,3D版泰坦尼克号已在全国上映。2D电影转换为3D电影到底什么原理?简单来说,2D-3D转换技术需要将2D影像的各部分嵌入3D的计算机图形(CG)空间中。要制作出比较协调的自然3D影像,需要数百人手工进行操作。 并不是所有人都喜欢3D电影,很多人认为传统电影转换为3D电转载 2012-04-13 10:33:57 · 2362 阅读 · 0 评论 -
如何查找DirectX3D应用程序的显存泄露
在关闭一个基于D3D的应用程序时,D3D调试运行库会报告内存泄露。按照以下步骤定位泄漏点。1. 在DirectX Control Panel中(通常在DXSDK安装目录中可以找到),启用“Use Debug Version of Direct3D 9”并且将Debug Output Level设置为”More”。确保Break on Memory Leaks被禁用。点击Apply。2. 在VS中调原创 2012-04-09 17:04:06 · 3083 阅读 · 0 评论 -
原子级3D渲染技术(Unlimited Detail Technology )
关于这项技术的详细介绍请看该公司的一个宣传片http://v.youku.com/v_show/id_XMzQ4Nzg2MjY0.html期待早日发布开发包,到那时将会是革命性的变化。公司主页:http://www.euclideon.com/技术介绍:http://unlimiteddetailtechnology.com/原创 2012-02-10 16:09:59 · 1560 阅读 · 0 评论 -
DirectX9获取深度buffer的方法
关于如何获取深度buffer的问题,网上好多介绍使用D3DFMT_D16_LOCKABLE的方法创建深度texture,然后lock之,但是由于好多N卡不支持D3DFMT_D16_LOCKABLE,造成该方法无法使用。本文给出一种方法,通过在shader中直接计算深度信息,输出到普通的texture上,然后就可以对该texture进行lock之类的操作。为了简单起见,该方法直接将深度信息写到bac原创 2012-01-18 16:35:23 · 1772 阅读 · 0 评论 -
坑爹的DirectX9设备丢失问题
今天遇到一个设备丢失的问题,浪费我好长时间才跟出来,真坑爹!结果是用到了一个ID3DXEffect接口,设备丢失时没有处理造成的。每次遇到设备丢失的问题都要跟踪好长时间才能搞定。所以给个建议:每当在系统中添加一个新的资源或者使用一个新的接口时,一定要处理其设备丢失问题,否则以后处理起来会很费劲! 下面总结一下设备丢失时需要处理的一些资源,暂时只想到这么多,如果有不完善的地方还请各位补充!原创 2012-01-16 17:46:05 · 2070 阅读 · 0 评论 -
使用DirectX9进行遮盖剔除
看到一篇讲述遮挡剔除的文章,写的不错,转帖地址:http://bbs.gameres.com/showthread.asp?threadid=11409对象剔除是图形编程中一个重要的方面。渲染那些看不见的物体是十分耗时的。然而,就目前来说当务之急是优化剔除算法本身。因为通常剔除算法会消耗大量的处理时间。 传统的算法对于一般情况的处理已经提升得很快了也改进得足够多了,但还是留下了些许遗憾。一些算法剔转载 2012-01-13 17:56:35 · 2428 阅读 · 0 评论 -
DirectX9.0中用来进行设备检测的函数汇总
1. IDirect3D9::CheckDeviceTypeHRESULT CheckDeviceType( [in] UINT Adapter, [in] D3DDEVTYPE DeviceType, [in] D3DFORMAT DisplayFormat, [in] D3DFORMAT BackBufferFormat, [in] BOOL Windowed)原创 2012-01-13 13:05:41 · 2535 阅读 · 0 评论 -
关于调用DirectX接口DrawIndexedPrimitive()崩溃问题的原因
今天遇到一个bug,有如下一段代码:LPDIRECT3DVERTEXBUFFER9 pVB;pVB->Lock( 0, 0, (void**)&pTemp, 0 );int start = 0;int end = 20;for(int i = start; i < end; i++){ (pTemp + i)->color = 0xffff0000;}.........pVB-原创 2011-11-09 16:14:13 · 1461 阅读 · 0 评论 -
谁知道下面这个视频中的特效是用什么软件做的?
http://v.youku.com/v_show/id_XMjkxMTM0MTQ4.html谁知道这个特效是用什么软件做的?谢谢!!!!原创 2011-11-22 23:23:20 · 1868 阅读 · 1 评论 -
实时环境映射贴图(Real-time Evironmnet Mapping)
如果你是个赛车游戏的爱好者,你一定玩过风靡全世界的赛车游戏《极品飞车:地下狂飚2》 (Need For Speed : UnderGround2)。在这款游戏中,玩家扮演了一个靠赛车为生的地下飚车手,在永远是夜晚的城市中飞驰。这款游戏大量地运用了环境映射技术(Real-time转载 2011-08-24 14:51:02 · 2354 阅读 · 0 评论 -
立体视频汇总
今天去BIRTV2010看展览,发现现在的3D立体视频技术非常流行,回来后就收集了一下介绍立体视频的技术,整理如下:一:红蓝立体原理原帖地址:http://bbs.cnliti.com/viewthread.php?tid=476&fromuid=0 人类是通过左眼和右眼所看转载 2010-08-23 21:47:00 · 2233 阅读 · 0 评论 -
D3D中D3DXMatrixPerspectiveFovLH()和D3DXMatrixPerspectiveOffCenterLH()区别及相互转化
在使用Direct3D设置投影矩阵时经常用到下面两个函数:D3DXMatrixPerspectiveFovLH()和D3DXMatrixPerspectiveOffCenterLH(),但是这两个函数究竟有什么区别?他们之间如何转换?这两个问题也是困扰我好久,最近整理了一下网上搜原创 2011-03-10 16:41:00 · 4458 阅读 · 0 评论 -
Anti-alias的前世今生-常用反走样算法总结
原文: http://www.cnblogs.com/gongminmin/archive/2011/05/16/2047506.htmlAnti-alias,简称AA,在图形学中广泛地用于提升渲染质量。经过几十年的发展,AA也从离线渲染逐步普及到了实时渲染的领域。本系列文章将总转载 2011-09-02 13:34:56 · 8730 阅读 · 0 评论 -
利用色分法实现了3D立体视频输出
之前系统中一直采用的是快门式的方法实现的立体视频输出,在色分,偏光、和快门式中,快门式应该是效果最好的,之前觉得色分法效果不好一直没有实现,不过快门式对硬件有特殊的要求,所以为了在普通机子上能够实现立体输出,在系统中添加了色分法的立体输出,分别实现了左眼红色右眼蓝色、左眼绿色右眼原创 2011-09-01 15:02:19 · 1983 阅读 · 0 评论 -
ID3DXSprite::Draw()接口备忘
接口原型描述如下:HRESULT Draw( LPDIRECT3DTEXTURE9 pTexture, CONST RECT * pSrcRect, CONST D3DXVECTOR3 * pCenter, CONST D3DXVECTOR3 * pPosition, D3DCOLOR Color);PTexture:需要往Backbuffer上面绘制的Textu原创 2012-09-16 17:07:58 · 4596 阅读 · 0 评论 -
3D模型读取库:Assimp
Assimp(Open Asset Import Library)是一个支持读取多种模型资源的开源库,当前最新的版本是3.0版,支持读取以下类型的3D模型:Collada ( .dae )Blender 3D ( .blend )3ds Max 3DS ( .3ds )3ds Max ASE ( .ase )Wavefront Object ( .obj )Industry Foundation转载 2012-09-17 17:52:25 · 23247 阅读 · 4 评论 -
DirectX3D 点精灵绘制失效的问题
最近遇到一个问题,有时候LPD3DXSPRITE 的Draw函数无效,找了好久都没有解决,在一次调试Directx3D时,将DX的调试模式打开后发现这个Draw函数有时就会失效,于是找到那个出问题的机子,查看其DirectX3D调试模式,果然是打开状态,关闭后问题就解决了。这个问题可能是DirectX在调试模式时的一个bug。原创 2013-04-01 14:38:53 · 2097 阅读 · 0 评论 -
KinectFusion--3D重建的利器
微软正在进行一个名为KinectFusion的项目。目标是利用一台围绕物体移动的kinect实时重建物体的三维模型。(是不是可以理解为Kinect版本的SLAM?)不同于的简单的三维点云的拼接,该项目的另外的吸引人的特性在于:如果对物体进行持续的扫描,三维重建精度可以由粗到细的逐渐提高。(类似superresolution?)演示视频(必看!!!)很给力。更兴奋地是很快就会发布sdk开发包了,ht原创 2013-03-13 16:45:13 · 6916 阅读 · 1 评论 -
绘制摄像机和灯光等场景物件时技巧
首先建模时将模型的中心放置在摄像机的中间(或者灯光的尾部),主要是将其朝向+Z轴,让模型的局部坐标系的x,y,z轴和世界坐标系平行,为什么这么做,主要是利用view变换的矩阵。在具体渲染模型时,需要确定模型的世界矩阵,这个世界矩阵的获取,是通过view矩阵的逆矩阵获得的。举个例子,摄像机的位置为vPos,目标点为vTarget,可以通过D3DXMatrixLookAtLH()接口获得其View矩阵原创 2013-03-01 11:57:27 · 1409 阅读 · 0 评论 -
关于SetTexture()调用引起显存泄露的问题
项目中遇到一个问题,添加了GPU特技后,播放多次就会出现申请显存失败的问题,并且使用GPU-Z查看显存,也是在不断增加,于是断定是由于显存泄露造成的,仔细检查代码,发现在调用LPDIRECT3DTEXTURE9的Release时,返回值为1而不是0,这样的话实际上DX并没有真正释放显存,而只是将其引用计数减一,结果造成了显存泄露。问题在于DX的文档中只是说明了在调用LPDIRECT3DTEXTUR原创 2013-02-26 18:33:47 · 5740 阅读 · 4 评论 -
HGE学习笔记
1.hgeSprite::SetTextureRect接口用来改变精灵的的裁切范围,如果adjSize参数为false时,精灵的大小保持不变,它是根据新参数从纹理中取出相应的指定区域时根据原始大小进行缩放,从而保持设置前的大小;2.hgeSprite::GetBoundingBox接口用来获取精灵的外包框,该函数获取的外包框是根据传入的x,y位置计算出来的屏幕坐标值,获取的是原始的buffer,即原创 2012-11-04 20:03:55 · 1912 阅读 · 0 评论 -
DirectX3D中LockRect接口使用注意事项
项目中遇到一个问题:使用D3DXCreateTexture( pDevice, nWidth, nHeight, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM,&pCreateMemTexture);在内存中创建了一个Texture,然后调用pCreateMemTexture->LockRect()锁定其内存,并更新其内容。在程序退出时调用pCreateMemT原创 2012-11-07 10:16:21 · 10523 阅读 · 1 评论 -
HLSL语法高亮插件
用VS编写着色语言时,很希望语法高亮,而非一片黑压压的代码。可以使用NShader( http://nshader.codeplex.com/),目前支持vs2008,2010,2012,下载后双击直接安装即可使用,需要注意的是着色器语言的文件扩展名必须是如下指定的才可以。其支持了如下文件的关键字高亮显示:NShader uses a specific shader language highli原创 2012-11-05 13:23:44 · 3657 阅读 · 1 评论 -
阅读一款3D引擎的方法备忘
原帖地址:http://www.cnitblog.com/linghuye/archive/2009/11/29/62870.html 要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类转载 2012-11-03 18:22:57 · 1339 阅读 · 0 评论 -
关于万向节死锁(Gimbal Lock)
原文链接:http://www.cnblogs.com/soroman/archive/2006/10/12/526163.html在http://blog.donews.com/wanderpoet/archive/2005/07/04/453608.aspx看到一篇关于Gimbal Lock的E文,解释得挺清楚的,翻译如下:Gimbal LockWhat's Gimbal Lock?Gimba转载 2012-11-03 17:27:05 · 1769 阅读 · 1 评论 -
HGE引擎---hgeAnimation动画精灵
通过hgeAnimation动画精灵类可以实现精灵动画,此处重点说一下构造函数的参数 hgeAnimation( HTEXTURE tex, int nframes, float FPS, float x, float y, float w, float h);其中:tex:存放动画的texture,可以通过hge->Texture_Load()加载;注意此处加载的是一个张图片,里原创 2012-11-01 23:31:02 · 7143 阅读 · 0 评论 -
DirectX9.0c读书笔记
最近想把DirectX9.0C的文档重新细读一边,本文将记录阅读过程中的一些笔记,不定期更新。1.HAL和REF设备关于两者的区别不说了,主要说一下REF设备的使用场合。主要有如下两方面的使用场合:第一:想使用一些显卡不支持的高级特性时,因为REF设备支持所有的Direct3D特性。第二:这个用途自认为比较重要,主要用来调试程序用,当使用HAL设备时得到的结果不正确,并且认为上层代码没问题的情况下原创 2012-10-21 17:08:07 · 1993 阅读 · 0 评论 -
图像处理常用算法GPU实现三:基于模板匹配的边缘检测
上一篇文章给出了基于微分方法的边缘检测,该篇给出一个基于Prewitt算子的模板匹配检测算法。除了水平和垂直方向外,此处还给出了其他方向的检测,一共8个方向,算子如下:代码如下:/********************************* Author: rabbit729* E-mail: wlq_729@163.com* Date: 2012-09-24*原创 2012-09-24 23:10:04 · 4720 阅读 · 0 评论 -
图像处理常用算法GPU实现二:基于微分的边缘检测
/********************************* Author: rabbit729* E-mail: wlq_729@163.com* Date: 2012-09-23* Description: 图像的边缘检测********************************/#include //-----------------原创 2012-09-23 10:54:55 · 3482 阅读 · 3 评论 -
NaN and infinity literals not allowed by shader model 错误解决方法
一般情况下发生在FX编写的时候,特别注意以下情况pow(max(0, f), e),这句话会存在一个问题就是当max(0,f)的值为0时,将出现pow(0,e),而实际上对于这个幂次是没有意义的,所以会出现报错,可以修改此方法,或者使用多项式展开,或者使用更简单的办法,比如将0改为0.00001f,即 pow(max(0.00001f,f),e). 这样一般都能够解决问题了。补充:shader中如转载 2012-10-11 18:18:32 · 1935 阅读 · 0 评论 -
图像处理常用算法GPU实现一:图像二值化
本系列文章将使用GPU实现图像处理中常用的算法,此处只给出代码,关于算法原理描述有很多资料,大家可以自行查找。不足之处请大家不吝赐教,共同提高。/********************************* Author: rabbit729* E-mail: wlq_729@163.com* Date: 2012-09-20* Description: 图像的二原创 2012-09-20 11:43:30 · 6180 阅读 · 1 评论 -
图像处理常用算法GPU实现五:图像对比度增强
/********************************* Author: rabbit729* E-mail: wlq_729@163.com* Date: 2012-10-09* Description: 图像的对比度增强********************************/#include //----------------原创 2012-10-09 22:13:54 · 6532 阅读 · 0 评论 -
图像处理常用算法GPU实现四:基于中值滤波的二值图像平滑
/********************************* Author: rabbit729* E-mail: wlq_729@163.com* Date: 2012-10-08* Description: 图像的平滑********************************/#include //-------------------原创 2012-10-08 15:46:11 · 5952 阅读 · 0 评论 -
DirectX3D画线接口ID3DXLine
使用DrawPrimitive()绘制的线没法控制其线性和绘制虚线,为此DirectX3D提供了ID3DXLine接口用来绘制线。该接口中的HRESULT Draw( CONST D3DXVECTOR2* pVertexList, DWORD dw原创 2011-07-04 16:59:53 · 14014 阅读 · 3 评论 -
使用Pix For Windows调试Shader傻瓜教程
下面,我们来介绍一下怎么使用DX SDK自带的工具PIX For Windows来调试Shader。这里只做简要的介绍,具体的情参看PIX的文档哈。如何找到文档呢?打开DX SDK开始菜单下面的DirectX Documentation for C++,我的版本是09年8月版本的,到目前为止好像是最新版,呵呵。然后依次:DirectX Software Development Kit/Tools/DirectX Performance Tools/PIX。 好了开始吧。首先,让我们选择一个例子转载 2011-01-14 16:24:00 · 4261 阅读 · 0 评论 -
HLSL编程点滴积累
下面是自己在学习HLSL编程过程中的一些笔记:1.顶点声明时D3DVERTEXELEMENT9结构体中UsageIndex字段用于标识多个相同用途的顶点向量。比如如下声明:D3DVERTEXELEMENT9 MorphMeshDecl[] = { //1st stream is for source mesh - position, normal, texcoord { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_PO原创 2011-01-11 23:47:00 · 2957 阅读 · 0 评论