11 2009 档案

ScreenToVector详解
摘要: 如果您正在学习ArcBall技术或者您对于屏幕坐标到三维坐标的转换有些模糊,那么一定不要错过本篇。ScreenToVector函数是微软DXUT框架中AcrBall类中的一个函数,它的作用是完成二维屏幕坐标到三维球坐标的转换,先看一下函数定义代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1D3DXVECTOR3CD3DArcBall::ScreenToVector(floatfScreenPtX,floatfScreenPtY)2{3/阅读全文

posted @ 2009-11-28 23:28 zdd 阅读(1383) | 评论 (6) 编辑

使用DirectX截屏
摘要: 如果截图变黑,请参考这一篇,DirectX截图黑屏的解决办法。网上有很多关于DirectX截屏的文章,但大都是屏幕截图,很少有窗口截图,本文则两者都涉及到,先讲如何截取整个屏幕,再讲如何截取某个窗口,其实二者的区别不大,只是某个参数的设置不同而已,最后我们还将扩展到任意区域的截图。首先看一下截屏用到的函数,最核心的当然是D3DXSaveSurfaceToFile,先看下函数原型Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1HRESULTD阅读全文

posted @ 2009-11-25 23:22 zdd 阅读(3946) | 评论 (16) 编辑

DirectX 总结
摘要: DDSDirectXDraw Surface file format, .dds。这是微软从DirectX7开始引进的一种文件格式,它用来存储压缩的或未压缩的纹理,该格式支持mimaps cube maps和volume maps, D3DX和许多其他的DX工具都支持这种格式,比如DirectX Texture Editor(dxtex.exe)和Texture Conversion Tool(Texconv.exe),从D3D110开始,DDS文件也支持纹理数组DXGIDirectX Graphics Infrastructure转换为.x格式MeshConvert.exe,这个tool位于阅读全文

posted @ 2009-11-25 15:48 zdd 阅读(1603) | 评论 (10) 编辑

[转载] DX中设备丢失的处理
摘要: 原文地址:http://hi.baidu.com/probill/blog/item/42371e113e9aed74cb80c43e.html当初觉得DX中设备丢失很讨厌,差点就投奔OpenGL了。不过现在发现其实也没那么麻烦啦,写点东西,给不清楚 设备丢失怎么处理的同学参考下。在创建时使用D3DPOOL_MANAGED标志的资源可以不需要重新载入,但D3DPOOL_DEFAULT加载的资源就需...阅读全文

posted @ 2009-11-24 16:23 zdd 阅读(183) | 评论 (0) 编辑

在3D程序中使用坐标轴提示
摘要: 一般的3D图形软件都有坐标轴提示的功能,比如3DMax,当旋转物体时,坐标轴也跟着旋转,这样就能实时跟踪物体的角度了,今天我们自己手动做一个,以前一直觉得挺难,今天做起来忽然发现,其实也很简单,说白了,就是画线而已,下面是3DMAX中的坐标轴由于DirectX中的ID3DXLine接口只能用来绘制2D直线,所以我们这里使用DrawPrimitive函数并传递D3DPT_LINELIST来绘制3D直...阅读全文

posted @ 2009-11-22 21:24 zdd 阅读(1468) | 评论 (2) 编辑

DirectX Effects初探
摘要: 一个effect包括以下几部分:一个vertex shader和/或一个pixel shader,一个需要设置的设备状态列表,一个或多个渲染管道。此外,设计一个备用机制以使effect能够在不同级别的图形设备上工作也是很有用的-也即对于同一个效果设计不同的版本。Direct3D将effects放在effect文件中,这样做的好处是,首先它使我们能够随时改变一个effect的实现而不必重新编译程序的...阅读全文

posted @ 2009-11-19 17:41 zdd 阅读(459) | 评论 (0) 编辑

HLSL-高级着色语言简介
摘要: HLSL-High Level Shader Language优点用来书写Vertex Shader和Pixel Shader程序的代码,语法类似于C/C++,在DirectX 8.x的时代,Shader程序都是用低级Shader汇编语言编写的,姑且称之为LLSL吧,HLSL与之相比具有以下优点:更高的生产力,使用HLSL编程更快更容易,使我们有更多的时间关注与算法而不是编码更好的可读性,使用HLSH编写的程序更易读,易调试及维护编译器将生成更加高效的汇编代码可以将同一份代码编译成任何可用的Shader版本,但是用LLSL则必须按不同版本编写代码如果你的显卡不支持Shader的话,那么可以使用阅读全文

posted @ 2009-11-18 16:09 zdd 阅读(523) | 评论 (0) 编辑

Quaternion和Rotation Matrix的相互转换
摘要: 设有Quaternion q(x, y, z, w), rotation axis(x, y, z), rotation angle (theta),则Quaternion和Axis-Angle有如下对应关系, q.x = sin(theta / 2) * axis.xq.y = sin(theta / 2) * axis.yq.z = sin(theta / 2) * axis.zq.w = c...阅读全文

posted @ 2009-11-06 09:41 zdd 阅读(481) | 评论 (0) 编辑

如何使用DXUT框架
摘要: DXUT是什么?DXUT即DirectX Utility Library,它是微软为DirectX Samples写的一个框架,有了这个框架,Sample的构建就方便多了,这个框架实际上抽取了构建Sample的公共代码,比如处理窗口消息,处理设备丢失与重设等等,将这些代码提取出来放到DXUT中,便于每个Sample重用。这样一来,我们就可以从繁重的重复代码中解脱出来,专注于编写customer code。下面我们就看一下如何用DXUT框架造自己的DirectX程序。在这里我使用的DirectX SDK版本是March 2008, 编译器是VSTS2008 想要使用DXUT,必须安装Direct阅读全文

posted @ 2009-11-04 10:00 zdd 阅读(2229) | 评论 (10) 编辑

如何配置DirectX开发环境
摘要: 一个DirectX程序要想正确的编译和链接,需要下面三个主要前提安装DirectX SDK正确配置.h文件路径和.lib文件路径正确链接所需.lib文件安装DirectX SDK可以直接到微软的官方网站上下载最新的SDK,链接在这里 http://msdn.microsoft.com/en-us/directx/ 配置.h文件和.lib文件路径1. 启动VS,依次选择tools-option-projects and solutions-VC++Directories,在show directories for下面有几个选项2. 选择Include files, 这个是DirectX头文件所在阅读全文

posted @ 2009-11-04 09:46 zdd 阅读(1489) | 评论 (6) 编辑