学习d3d和dlld3d透视dll需要看什么书

CE6.2最新版-新增D3D_HOOK(CF方块透视原理) - ::::工具下载:::: -
易语言教程_易语言源码_易语言写挂_易语言论坛_看流星社区
UID30006&帖子60&流星币100 &阅读权限20&在线时间9 小时&
CE6.2最新版-新增D3D_HOOK(CF方块透视原理)
这个是目前ce的最新版本,支持到d3d hook,如图,其实就是cf方块透视的原理。需要向游戏注入一个钩子dll,去hook游戏的得d3d函数,在人物角色初始化的时候,得d3d函数会被调用到,不过此时的函数已经被调包,并且新增了一个图标进去。
就比如cf透视辅助把 每个人的身上都会出现一个小的方块图,这个小的方块图是辅助作者加上去的。
这样一来,我们就可以看到人物了。所谓透视,其实就是往每个人物图像上 增加一个 自己的图片即可。
不过需要像ce6.2一样去hook 游戏的到d3d函数。
如今ce6.2也实现了这个功能。
受到这个技术的启发,关于游戏黑屏优化也非常容易搞定。包括隐藏建筑物和穿墙。
本帖隐藏的内容需要回复才可以浏览
UID65461&帖子9&流星币20 &阅读权限10&在线时间0 小时&
阿萨德等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等
UID65513&帖子1&流星币5 &阅读权限10&在线时间0 小时&
& & 假的我去草&&是木马
UID64931&帖子2&流星币80 &阅读权限20&在线时间0 小时&
看看再说。。
UID65530&帖子2&流星币6 &阅读权限10&在线时间0 小时&
诶呀可让我找到这好的文章了!
UID65530&帖子2&流星币6 &阅读权限10&在线时间0 小时&
我回复了啊我回复了啊我回复了啊我回复了啊我回复了啊
UID65509&帖子5&流星币28 &阅读权限10&在线时间1 小时&
罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐水水水罐罐罐罐罐罐
罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐水水水水水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐水水水水水水水水水水水水水罐罐罐罐罐罐
罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐水水水水水水水水水水水水水罐罐罐罐罐罐罐
罐罐罐罐罐罐罐罐罐罐罐罐水水水罐水水水水水水水水水水水罐罐罐罐罐罐罐罐罐罐
罐罐罐罐罐罐罐罐罐水水水水水水水罐水水罐罐水水水水水罐罐罐罐罐罐罐罐罐罐罐
罐罐罐罐罐罐水水水水水水水水水罐罐罐罐罐罐水水水水罐罐罐罐罐罐罐罐罐罐罐罐
罐罐罐水水水水水水水水水水水水罐罐罐罐罐罐水水水水罐罐罐罐罐罐罐罐罐罐罐罐
罐水水水水水水水水水水水水罐罐罐罐罐罐罐水水水水水水水水水水水罐罐罐罐罐罐
罐水水水水水水水水水水水水罐罐罐罐罐罐水水水水水水水水水水水水水罐罐罐罐罐
罐罐水水水水罐罐水水水水罐罐罐罐罐水水水水水水罐罐罐水水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水水罐罐罐罐罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水罐罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水水罐罐水水水罐罐水水水水水罐罐罐罐罐
罐罐罐罐罐罐罐罐水水水水罐罐罐罐水水水罐罐水水水水罐罐水水水水水罐罐罐罐罐
罐罐水水罐罐罐水水水水水罐罐罐罐水水水罐罐水水水罐罐罐水水水水水罐罐罐罐罐
罐罐水水水水水水水水水水罐罐罐罐罐水水罐罐水水水罐罐罐水水水水水罐罐罐罐罐
罐罐罐水水水水水水水水水罐罐罐罐罐罐罐罐水水水罐罐罐罐水水水水罐罐罐罐罐罐
罐罐罐罐罐水水水水水水水罐罐罐罐罐罐罐罐水水水罐水水水水罐罐罐罐罐罐罐罐罐
罐罐罐罐罐罐水水水水水水罐罐罐罐罐罐罐水水水水罐罐水水水水罐罐罐罐罐罐罐罐
罐罐罐罐罐罐罐罐罐水水水罐罐罐罐罐罐水水水水水罐罐罐水水水水水罐罐罐罐罐罐
罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐罐水水水水水水罐罐罐罐罐水水水水水水罐罐罐罐
UID65720&帖子24&流星币28 &阅读权限20&在线时间2 小时&
看帖、回帖,是美德。
UID65784&帖子1&流星币6 &阅读权限10&在线时间0 小时&
过程是怎样的
UID65786&帖子1&流星币7 &阅读权限10&在线时间0 小时&
& & 看看0.0
UID33502&帖子23&流星币210 &阅读权限30&在线时间2 小时&
看起来还不错
UID51064&帖子3&流星币30 &阅读权限10&在线时间0 小时&
哈哈哈哈哈哈哈哈哈啊
UID37191&帖子11&流星币62 &阅读权限20&在线时间4 小时&
萨法放松对分散对方
UID66299&帖子1&流星币6 &阅读权限10&在线时间0 小时&
撒打算的萨达
UID66319&帖子2&流星币7 &阅读权限10&在线时间0 小时&
看看!!!!!
UID57341&帖子23&流星币261 &阅读权限30&在线时间7 小时&
诶呀可让我找到这好的文章了!
UID30377&帖子21&流星币272 &阅读权限30&在线时间17 小时&
好的东西有好的作者
UID52872&帖子8&流星币42 &阅读权限20&在线时间1 小时&
回帖后跳转到最后一页
UID66348&帖子74&流星币220 &阅读权限30&在线时间3 小时&
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
UID66493&帖子26&流星币54 &阅读权限20&在线时间3 小时&
撒旦撒旦撒撒大
[通过 QQ、MSN 分享给朋友]
Powered byDLL字母分类
D3dhook.dll
D3dhook.dll软件简介:
D3dhook.dll文件下载,解决找不到D3dhook.dll的问题
D3dhook.dll控件常规安装方法(仅供参考):
一、如果在运行某软件或编译程序时提示缺少、找不到D3dhook.dll等类似提示,您可将从脚本之家下载来的D3dhook.dll拷贝到指定目录即可(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用。
二、您从我们网站下载下来文件之后,先将其解压(一般都是rar压缩包),
然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。默认都是支持32位系统的, 如果您不知道是X86还是X64,您可以看。
三、根据软件情况选择文件版本。此步骤比较复杂,如果是Windows的dll文件,
版本号以5.0开头的或含有 nt 一般是windows2000的文件。
版本号以5.1开头的或含有 xp、xpsp1、xpsp2、xpsp3 信息的一般是windowsXP的文件。
版本号以6.0开头的或含有 longhorn、vista 信息的一般是windowsVista的文件。
版本号以6.1开头的或含有 win7 信息的一般是windows7的文件。 如果不是windows的dll文件,则需要灵活查看版本号、描述、网友提供的信息、以及相关dll的版本号去判断。
四、直接拷贝该文件到系统目录里:
1、Windows 95/98/Me系统,将D3dhook.dll复制到C:\Windows\System目录下。
2、Windows NT/2000系统,将D3dhook.dll复制到C:\WINNT\System32目录下。
3、Windows XP/WIN7/Vista系统(64位系统对应64位dll文件,32位系统对应32位dll文件),将D3dhook.dll复制到C:\Windows\System32目录下。
4、如果您的系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64目录具体的方法可以参考这篇文章:
五、打开&开始-运行-输入regsvr32 D3dhook.dll&,回车即可解决。希望脚本之家为您提供的D3dhook.dll对您有所帮助。
通过脚本之家下载dll的朋友,可将下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成D3dhook.dll注册(win98不支持)。下面是系统与dll版本对应的注册bat文件(64位的系统对应64位dll文件,32位系统对应32位的dll文件,如果64位的系统安装32位的dll文件,请将下面的system32替换为SysWOW64即可。)
@echo 开始注册
copy D3dhook.dll %windir%\system32\
regsvr32 %windir%\system32\D3dhook.dll /s
@echo D3dhook.dll注册成功
下载地址:
解压密码:www.jb51.net 就是本站主域名,希望大家看清楚。
推荐使用 [
] 下载,使用 [
] 以上版本解压本站软件。
如果这个软件总是不能下载的请点击报告错误,谢谢合作!
下载本站资源,如果服务器暂不能下载请过一段时间重试!
如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
不知如何下载的,可以查看D3D透视DLL源码 - 下载频道
- CSDN.NET
&&&&D3D透视DLL源码
D3D透视DLL源码
D3D透视DLL源码,穿越火线透视~~~~~~~~~~~~~~
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行我0基础。想学C语言。希望给推荐本书什么的_百度知道
我0基础。想学C语言。希望给推荐本书什么的
完全没基础C语言需要载哪些软件
要C/C++语言首先自要兴趣要本书发工具条件配备师或者师傅习编程程才能少走弯路事倍功半都前期条件准备足脑发热结久我经验我推荐 面2本<img class="word-replace" src="/api/getdecpic?picenc=0a007a本书外经典教材写非C语言:
C Primer Plus 文版C++语言: C++ Primer Plus 文版我使用发工具
VS2010 我比较贪新所装<img class="word-replace" src="/api/getdecpic?picenc=0a006c655f选择其款OK 百度 80x86汇编站 看看 站写面几篇关于C语言编程文章 编程,编程何确入门Windows系统C/C++习领域?掌握C/C++,何Windows系统发界面程序?何确入门Windows系统驱发领域?何确进入基于x86-64Bit Windows系统商业软件破解领域?何确待汇编习反汇编习?VC++程序员,我需要哪些东西? 希望些内容帮助,真习编程联系篇文章作者,跟获取更编程交流
其他类似问题
26人觉得有用
为您推荐:
其他2条回答
#include &Windows.h&
#include &mmsystem.h&
#include &d3dx9.h&
#pragma warning( disable : 4996 ) // disable deprecated warning
#include &strsafe.h&
#pragma warning( default : 4996 )
//全局变量
LPDIRECT3D9
= NULL; // 用于建立D3D设备指针
LPDIRECT3DDEVICE9
g_pd3dDevice = NULL; // 渲染设备
LPDIRECT3DVERTEXBUFFER9 g_pVB
= NULL; // 保存顶点缓冲
// 自定义顶点类型的结构
struct CUSTOMVERTEX
FLOAT x, y, // 三维顶点坐标
// 项点颜色
//自定义灵活顶点格式,描述自定义顶点结构
//D3DFVF_XYZRHW包含经过变换的顶点坐标
//D3DFVF_DIFFUSE包括漫反射的颜色信息
#define D...
建议先去玩会易语言然后在玩C语言 我曾经零基础时候在C什么都不懂 但是在E能稍微的做点小东西
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁随笔分类 - D3D
摘要: 混合模式可以将两个图层的色彩值紧密结合在一起,从而创造出大量的效果。在这些效果的背后实际是一些简单的数学公式在起作用。下面我将介绍photoshop cs2中所有混合模式的数学计算公式。另外还介绍了不透明度。下面所介绍的公式仅适用于RGB图像。对于Lab颜色图像而言,这些公式将不再适用。Opacit...
小 楼 一 夜 听 春 雨 阅读(220) |
摘要: /graphics/archive//2476413.html什么是View Transform我们可以用照相机的原理来阐释3D图形的绘制过程,想象一下,我们在摄影的时候都需要做哪些工作,大致可分为如下几个步骤摆放好待拍摄的物品,或者人物。调整好拍摄角度。调整焦距。拍摄。好了,来分析一下,上面的第一步就相当于世界变换了,将一个模型置于一个公认的坐标系中,这里所谓的公认,也就是大家都遵守的,目的是保证待拍摄的物体和照相机在同一个坐标系。第二步相当于视图变换,这个过程是调整Camera到合适的位置以便拍摄,在3D程序中,也就是设置Vi
小 楼 一 夜 听 春 雨 阅读(147) |
摘要: /cxrs/archive//1585038.html1、什么是Shadow Maping? Shadow Mapping是由LanceWilliams于1978年在一篇名为&Castingcurvedshadowsoncurvedsurfaces&的文章中提出的,这篇文章是ShadowMap技术之根源。其实原理很简单,如果光源和目标点之间的连线没有任何物体阻挡的话,则目标点没有在阴影中;如果有物体遮挡,则目标点处在阴影中。而ShadowMap,就是一张记录了每个象素处用于比较遮挡关系信息的Texture.产生
小 楼 一 夜 听 春 雨 阅读(110) |
摘要: http://blog.csdn.net/huazai434/article/details/5650146一,法线贴图实际上是一张纹理图,但纹理中存储的并不是颜色值,而是法向量坐标。这项技术的主要目的是实现物体表面的粗糙细节。二,法向量在纹理中的存储形式。对于24位纹理格式,r g b 三个元素中分别存储了法向量的三个坐标值。然而,法向量三个坐标值 的取值范围均为(-1.1),而纹理格式中rgb分量的范围是(0,255),因此我们必须做相应的变换。变换方程如下:f(x)=(0.5x+0.5)*255当我们从纹理文件中读取纹素值后,我们便需要将其从(0,255)转换成(-1,1)。由于tex2
小 楼 一 夜 听 春 雨 阅读(182) |
摘要: 我在学习D3D的深度测试和Alpha混合的时候,有一些遗憾。书上提供的例子里说一定要先渲染不透明物体,再渲染透明物体,对渲染状态的设置也有特殊要求。我看的很晕。自己查图形学的书,上网找资料,结果还是糊里糊涂。在和一个正在做游戏开发的大学同学的一点点的讨论中,我慢慢理解了深度测试和Alpha混合的关系,也就是为什么要那样设置渲染状态,为什么对渲染顺序有特殊要求。在继续看之前,我推荐您看一下这个链接里的内容/cocoaleaves/archive//1438978.html,其中讲了一些理论知识,但是不够精细。所以我做了下面的补充。我
小 楼 一 夜 听 春 雨 阅读(246) |
摘要: 重要注释——矩阵的顺序:有一件事需要牢记,HLSL允许你使用2种不同方式处理矩阵和向量相乘——mul(v,m)或者mul(m,v)。二者之间唯一的区别就是矩阵被有效地变换。在OGRE中传递矩阵你应该使用mul(m,v)——因为这与渲染器从像RenderMonkey一样的工具中生成的结果保持一致,并且也和Cg一致,但是与使用mul(v,m)的Dx9 SDK和FX合成器不一致——在使用那些渲染器时,你不得不转换mul()的参数。注意,如果你在渲染器中使用了float3x4 / matrix3x4类型,且绑定了OGRE自动定义(例如骨骼矩阵),那么你在程序定义时或许需要使用column_major_
小 楼 一 夜 听 春 雨 阅读(238) |
摘要: 像素和纹素,都是点,像素是左上角第一个像素为中心开始计算;纹素,以左上角的点为中心开始计算的;存取纹理时,D3D的像素中心不在纹理点的中心,所以要偏半个像素,也就是:纹理坐标U = u +0.5 * (1 / screenSize.x); V = v + 0.5 * (1 / screentSize.y) ;参考:/ttthink/archive//1582588.htmlhttp://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=2912http://www.25k5.
小 楼 一 夜 听 春 雨 阅读(97) |
摘要: Sets whether or not this pass renders with depth-buffer writing on or not.Format: depth_write If depth-buffer writing is on, whenever a pixel is written to the frame buffer the depth buffer is updated with the depth value of that new pixel, thus affecting future rendering operations if future pixels
小 楼 一 夜 听 春 雨 阅读(92) |
摘要: 使用Z-偏移量 在一个三维场景中,我们可以对共面的多边形使用z-偏移量来使它们不再共面。这项技术通常用于在场景中正确的显示阴影。例如,一堵墙上的阴影与这堵墙的深度值是相同的,如果我们先渲染了墙再来渲染阴影,那么阴影就有可能看不到,或者会出现一些深度上的失真。这时,我们可以颠倒渲染的顺序希望能使得到的效果也产生相应的颠倒,但是深度上的失真仍然无法避免。 在渲染共面的多边形时,我们可以给z值增加一些偏移量,这样就能正确的显示共面的多边形了。要给多边形增加一个z-偏移量,我们可以在渲染前调用IDirect3DDevice3::SetRenderState方法,并将dwRenderStateTyp..
小 楼 一 夜 听 春 雨 阅读(76) |
摘要: http://blog.csdn.net/xoyojank/article/details/4352090选人界面的角色出现时的效果非常酷, 一直不知道咋做的还是中speedtree在镜头前时的消隐也是这种溶解效果, 跟的圆形透明消隐差不多, 但是这种方法不用alphablend, 效率高些. (当时我形容是被虫子啃了...这机器上没装, 不截图了)最近研究ShadowMap的Alpha穿透, 用到了clip()函数, 恍然大悟, 原来如此啊~clip (DirectX HLSL)Discards the current pixel if the specified value is less
小 楼 一 夜 听 春 雨 阅读(107) |
摘要: 一) 有效的性能评测 对于任何一个3D应用程序来说,追求场景画面真实感是一个无止尽的目标,其结果就是让我们的场景越来越复杂,模型更加精细,这必然给图形硬件带来极大的负荷以致于无法达到实时绘制帧率。因此,渲染优化是必不可少的。在渲染优化之前,我们需要对应用程序性能进行系统的评测,找出瓶颈,对症下药。对于3D应用程序来说,影响性能的十分多,同时不同的硬件配置条件下,瓶径也会有所不同。因此,对应用程序进行有效的性能评测,不仅需要对整个渲染管线原理有深入地了解,此外借助一些评测工具能让我们的工作事倍功半。 我们知道渲染流水线的速度是由最慢的阶段决...
小 楼 一 夜 听 春 雨 阅读(254) |
摘要: http://blog.csdn.net/xoyojank/article/details/2028898热浪扭曲o每个人都对自然界中的这种大气效果很熟悉o光线在穿过不同密度的介质时会弯曲热微光o热空气密度比冷空气小o密度影响介质的折射率o热空气上升的同时会被冷空气替代, 这会改变光射入眼睛的路线o渲染场景到RGBA离屏缓存(可渲染的纹理)o颜色写入RGB值o扭曲度写入Alpha通道o绘制全屏长方形到后备缓冲区o对离屏缓冲采样以获得扭曲度o用扰动贴图来确定扰动向量, 用扭曲度放缩后偏移原始纹理坐标o基于扰动纹理坐标的可增长泊松分布(根据扭曲度来进行偏移)扭曲度o逐像素判断当前像素被扭曲的程度o
小 楼 一 夜 听 春 雨 阅读(107) |
摘要: /ixnehc/articles/1282350.html先从最基础的写起吧,关于Device的渲染流程.D3D9的Device就是D3D给我们提供的一个绘制3D图形的工具,它的绘制流程大致是这样的:*.首先Device的使用者要准备好顶点数据,也就是一个顶点的数组,称为A*.然后这个数组A被传入device的渲染管线*.device内部依次对每个顶点进行处理,有两种模式,固定管线和shader模式,所谓固定管线就是device内部实现的一个固定的程 序,用户只能通过设定各种参数(一些RenderState)来控制它,当然这不够灵活,所以有了shad
小 楼 一 夜 听 春 雨 阅读(116) |
摘要: 转自:/archives/shaderglsl/review-normal-map-bump-map.htmlNormal Map法线贴图,想必每个学习计算机图形学的人都不陌生。今天在这里按我的理解总结一下,作为复习,也作为深入学习吧。——自从看完那本《数学在计算机图形学上的应用》后,一直想好好地真正实践一次法线贴图/凹凸贴图呢(以前是根据橙书弄了一下罢了)。昨天偶尔看到篇涉及BumpMap的文,正好觉得是个机会,便在网上狂找相关资料——果然,越看越觉得自己还有很多理论的地方需要弄明白呢。说起Normal Map(法线贴图),就会想
小 楼 一 夜 听 春 雨 阅读(127) |
摘要: 什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,要想理解这种技术还请您听我慢慢道来。 我们知道,在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一 个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度, 过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。如何利用贴图实现凹凸效果呢? 可行的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。 后来...
小 楼 一 夜 听 春 雨 阅读(62) |
摘要: cube maptexture可以理解为6个面的纸盒, sample的时候使用vector射线型的sample.volume texture可以理解是一摞2D texture,sample的时候用第几摞+2D坐标来sample.虽然都是非2D,sample都用3维数据,差异大啊.CubeMap 在实时渲染中应用十分广泛. 通过视线和法线计算出的反射光线来查询CubeMap可以创建一个真实的反射镜面体, 通过视线和法线计算出的折射光线来查询CubeMap可以创建一个透明体. 由于查询速度快的原因,在实时的CG渲染中应用十分的广泛.我们的CubeMap大都是从外部的图片得来的, 图片是不可以变化的
小 楼 一 夜 听 春 雨 阅读(140) |
摘要: 我常常这么大胆的认为,搞科学的人总是喜欢用各种让常人难以理解的复杂方式去处理某些其实可能很简单的事情,这种情况在他自身擅长的、有着诸多对手竞争的领域上极为常见。比如吧,搞DirectX的人用了左手坐标系,搞OpenGL的人偏偏就要用右手坐标系。这种情况的目的,是让他们那些搞科学的人得以突出他们的存在感和优越感。这种增加了这么多记忆成本只为了让他们爽一爽的事儿,对于我这种被科学搞了的人来说 ,就只剩下纠结和郁闷这两种感觉了。以上是某天看书看烦了的感想。Anyway,在学习RenderMonkey的过程中,纠结于书上的各个例子无法正确实现,总是有顶点的矩阵变换出问题。最后发现是代数没学好,好吧。。
小 楼 一 夜 听 春 雨 阅读(118) |
摘要: http://daehgib./blog/static//透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。 没错,主流的3D APIs如OpenGL、D3D的
小 楼 一 夜 听 春 雨 阅读(62) |
摘要: 摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人”投影纹理映射( Projective Texture Mapping )最初由 Segal 在文章 “Fast shadows and lighting effects using texture maaping” 中提出,用于映射一个纹理到物体上,就像将幻灯片投影到墙上一样。该方法不需要在应用程序中指定顶点纹理坐标,实际上,投影纹理映射中使用的纹理坐标是在顶点着色程序中通过视点矩阵和投影矩阵计算得到的,通常也被称作投影纹理坐标 (coo
小 楼 一 夜 听 春 雨 阅读(50) |
摘要: http://blog.csdn.net/xukunn1226/article/details/775644Projective Texture是比较常见的一种技术,实现起来代码也就区区的不过百行,了解其原理及技术细节是我们的重点,知其然,知其所以然。粗略的说就是想象场景中有台投影仪(Projector),texture就是我们投影的内容,把纹理放在近裁剪面(near clip plane)上,沿着投影仪的方向把纹理投影到场景中。Xheartblue兄翻译了一篇文章,很好的给投影纹理的原理进行的阐述[1],有兴趣阅读原文的可以访问这里[2],这本书可以是好东东啊!!在这里有几个概念不能混淆了:
小 楼 一 夜 听 春 雨 阅读(74) |
摘要: 原文出处:SGI OpenGL 教程翻译:心蓝 潘李亮。 Email:译者前言: 影子有两种经典的实现方法:一是Shadow Volume 。二是Shadow Mapping。如何用Light Mapping来实现投影影子呢?这就要用到Project Texture.直接翻译的意思就是投影纹理----把一个纹理像放幻灯片一样投影到场景中去,假想有一个电影机在放电影,沿着镜头方向,电影将被投在墙上,而投影纹理就类似于这种情况,我们想要使用的纹理就是电影机里Film。 以下是我在SGI的教程中找到的文章。奉献给大家。How to Project a Te..
小 楼 一 夜 听 春 雨 阅读(55) |
摘要: http://flcstudio./blog/static//最近,我看到很多关于DirectX8在最新的API中摒弃DirectDraw的问题。很多人回到了以前的DX7.1中。我可以理解那些在DX7.1中有很多开发经验的人为什么这样做,但是有很多问题却是来自于那些刚学DX,还没有学过以前的API的初学者。人们争辩说很多人没有3D硬件,因此D3D对于DirectDraw是个错误的选择。我不相信那是真的,在D3D中进行2D渲染只需要做一点顶点操作,而其他的事情都可以被精简来提高填充率。简言之,在D3D中使用2D硬件进行2D渲
小 楼 一 夜 听 春 雨 阅读(155) |
摘要: 3D图形渲染管线什么是渲染(Rendering)渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1):图1:Rendering什么是渲染管线渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。一个流水线是一序列可以并行和按照固定顺序进行的阶段。每个阶段都从它的前一阶段接收输入,然后把输出发给随后的阶段。就像一个在同一时间内,不同阶段不同的汽车一起制造的装配线,传统的图形硬件流水线以流水的方式处理大量的顶点、几何图元和片段。图2显示了当今图形处理器所使用的图形硬件流水线。三维应用程序传给图
小 楼 一 夜 听 春 雨 阅读(190) |
摘要: 1.镜头不对: 物体不在镜头范围内,检查视图矩阵,世界矩阵,投影矩阵. 2.颜色全黑: 打开光照情况下,MATERIAL全为0, 或,在没有打开光照情况下,颜色值为0,造成全黑.检查当前Material和顶点颜色和纹理颜色. 3.深度不对: 被已有的深度遮住了.检查当前深度,直接在此渲染前加Clear深度为1.0作测试. 4.CullMode设置不对: 所有三角形被当作背面剔除了,设为CULL_NONE测试. 5.3D物件的纹理坐标统统大于1.0,且此时纹理寻址方式为BORDER, 且BORDER被设为黑色,画面全黑. 6.深度被Clear为0.0,且打开深度测试,绝对什么都画不上,...
小 楼 一 夜 听 春 雨 阅读(320) |
摘要: 1. 在Create D3D资源的时候,使用V()宏是非常必要的,因为很多情况下,即使D3D 资源创建失败,他也会继续执行下去,如此以来,程序的bug的定位就麻烦了很多,而使用V()宏会在出错的地方及时停下来,当然也有不好的地方,因为宏定义本身使用了if语句,因此如果V()宏下方有else将会导致else匹配if时出错的问题。2. Pair函数成对使用,我把Create-Release,Begin-End等等函数称为Pair函数,更多的时候,这应该称为一种习惯,就像括号的匹配一样,前者容易导致内存泄露,而后者产生的bug就更加奇怪,例如release下结果正常,而debug模式下结果却比较奇怪
小 楼 一 夜 听 春 雨 阅读(779) |
摘要: From the DXSDK DocumentationD3DFVF_XYZRHW - Vertex format includes the position of a transformed vertex. This flag cannot be used with the D3DFVF_XYZ or D3DFVF_NORMAL flags.D3DFVF_XYZW - Vertex format contains transformed and clipped (x, y, z, w) data. ProcessVertices does not invoke the clipper, in
小 楼 一 夜 听 春 雨 阅读(306) |
摘要: /blog/post/D3D_rm.html摘要受管贴图(Managed textures,也就是我们通常所谓的“自动管理贴图”),在DX6中首次被引入,经过一系列的改进和增强,在DX9中自动管理的资源类型增加到贴图,顶点缓冲,顶点索引缓冲,所有这些资源使用统一的公共接口。通过使用D3D资源管理器,应用程序可以轻松的处理设备丢失、处理稍微过量的显存使用。有时开发者在使用受管资源会遇到一些困难,这部分归咎与系统的抽象特性。在大多数情况下使用受管对象是不错的选择,但有时出于性能考虑也会使用非托管资源。这篇文章将讨论一般情况下如何处理资源,受管与非受管
小 楼 一 夜 听 春 雨 阅读(146) |
摘要: 1 只在必须的时候Clear。 IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。 2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。 状态包括RenderState,SamplerState,TextureStageState等 3 纹理尺寸尽可能小 4 从前至后渲染场景中的对象 从前至后渲染可以尽可能早地精选出不需要绘制的对象和象素 5 使用三角条带代替三角列表和三角扇。为了能更有效利用顶点高速缓存(cache),在排列条带时因考虑尽快重用顶点。 6 根所需要据消耗的系统资源...
小 楼 一 夜 听 春 雨 阅读(724) |
摘要: /_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/6cd9572c84ae.html下面,我们来介绍一下怎么使用DX SDK自带的工具PIX For Windows来调试Shader。这里只做简要的介绍,具体的情参看PIX的文档哈。如何找到文档呢?打开DX SDK开始菜单下面的DirectX Documentation for C++,我的版本是09年8月版本的,到目前为止好像是最新版,呵呵。然后依次:DirectX Software Development Kit/Tools/DirectX Perform
小 楼 一 夜 听 春 雨 阅读(116) |
摘要: 最近在优化项目中用的到引擎,下面是搜集到的一下资料,转帖如下:1 只在必须的时候Clear。IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。状态包括RenderState,SamplerState,TextureStageState等3 纹理尺寸尽可能小4 从前至后渲染场景中的对象从前至后渲染可以尽可能早地精选出不需要绘制的对象和象素5 使用三角条带代替三角列表和三角扇。为了能更有效利用顶点高速缓存(cache),在排列条带时因考虑尽快重用顶点。6 根所需要据
小 楼 一 夜 听 春 雨 阅读(222) |
摘要: A painless introduction to PIX for WindowsFor those interested in game development technology, it’s been a great week of product releases! Monday we saw the 1.0 release ofXNA Game Studio Express. Wednesday brought the release of the December 2006 version of theDirectX SDK, which includes the product
小 楼 一 夜 听 春 雨 阅读(253) |
摘要: /Leaf/archive//92897.htmlhttp://blog.csdn.net/ltttklyzy/article/details/6330692
小 楼 一 夜 听 春 雨 阅读(233) |
摘要: &1&. 若顶点结构中不设置颜色,也不设置顶点法线,只有位置。struct Vertex{ Vertex(){} Vertex(float x, float y, float z) { _x = _y = _z = } float _x, _y, _z; static const DWORD FVF;};const DWORD Vertex::FVF = D3DFVF_XYZ;绘制的时候D3D默认使用黑色来绘制三角形,所以Device-&Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_Z...
小 楼 一 夜 听 春 雨 阅读(689) |
摘要: 原文:/winsonchen/archive//1071319.html在3D游戏中,UI占了很大一部分窗口元素,比如魔兽争霸屏幕设置,除去底部控制台及顶部资源面板,场景渲染区域只有。要知道对于如今的3D游戏,越来越多的资源使用normalmap,越来越复杂的着色器代码,能够避免四分之一的ui窗口区域无效渲染,带来的性能提升余地是很大的。 正常的渲染次序是:RenderScene();RenderUI()。被UI界面遮挡的场景部分有两个方法可以优化:一是通过设置新的裁剪体过滤掉哪些经过坐标转换后被U
小 楼 一 夜 听 春 雨 阅读(173) |
摘要: HRESULT SetClipPlane(DWORDIndex,CONST float *pPlane);参数:第一个是索引,不用说了。第二个是存着 A B C D的数组。这个数组最后会用来构建 Ax+By+Cz+Dw = 0;平面。然后顶点会根据自已的位置(x,y,z,w)来进行判断。如果Ax+By+Cz+Dw &= 0。则表示在平面前方,保留。反之则在后方,被裁剪掉。值得注意的时,在固定管线使用平面裁剪的时候,是在世界坐标系中处理的。而用SHADER的时候,是在裁剪空间中处理的。(即顶点输出的时候的坐标系)貌似还是太抽象。比如顶点输入坐标是pos 此时的坐标变换阵是WVP,则 Out
小 楼 一 夜 听 春 雨 阅读(549) |
摘要: 开始错误一大堆。。。都是shader里面的语法错误。。。我擦!#include &d3dUtility.h&const DWORD width = 640;const DWORD height = 480;//// Globals//IDirect3DDevice9* Device = 0; IDirect3DVertexShader9* pShader = 0;ID3DXConstantTable* pConstTable = 0;ID3DXMesh* teaPot = 0;D3DXHANDLE viewMatHD3DXHAND...
小 楼 一 夜 听 春 雨 阅读(129) |
摘要: http://blog.csdn.net/cppyin/article/details/D程序中,通常用quaternion来计算3D物体的旋转角度,与Matrix相比,quaternion更加高效,占用的储存空间更小,此外也更便于插值。在数学上,quaternion表示复数w+xi+yj+zk,其中i,j,k都是虚数单位:i*i = j*j = k*k= -1i*j = k, j*i = -k可以把quaternion看做一个标量和一个3D向量的组合。实部w表示标量,虚部表示向量标记为V,或三个单独的分量(x,y,z)。所以quaternion可以记为[ w,V]或[ w,
小 楼 一 夜 听 春 雨 阅读(531) |
摘要: SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ) :不要剔除背面,即正反面都绘制。 SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ) :把顺时针的方向看作背面剔除掉 SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ) :把逆时针的方向看作背面剔除掉(在消隐中为默认值)默认值为D3DCULL_CCW, 即:把顺时针方向作为正面,逆时针方向的面作为反面剔除掉。
小 楼 一 夜 听 春 雨 阅读(117) |
摘要: 1.Viewport和Frustum有什么区别?2.Viewport和Frustum的NearClipPl?ane有什么区别?3.Vertex,Point,Vector有什么含义上的区别?Plane,Face和Mesh呢?4.为什么顶点会有W分量,它怎么算出来的?干什么用的?5.在一次完整的顶点渲染管线中,最多会出现多少种坐标系?(例如世界坐标系)6.上面的每个坐标系的实际意义是什么?互相之间怎么转换?转换矩阵怎么写,意义又是什么?7.光照是怎么计算的?光源可以设置Ambient,Diffuse...为什么Material也可以设置Ambient,Diffuse...?为什么顶点数据中还可以再
小 楼 一 夜 听 春 雨 阅读(376) |
摘要: 设置纹理采样属性HRESULT SetSamplerState( DWORD Sampler, //指定纹理采样属性的纹理层ID(0~7) D3DSAMPLERSTATETYPE Type, //纹理过滤类型 DWORD Value //设置纹理采样属性值);第二个参数D3DSAMPLERSTATETYPE Type取值:D3DSAMP_MAGFILTER //处理放大过滤D3DSAMP_MINFILTER //处理缩小过滤D3DSAMP_MIPFILTER //多纹理过滤D3DSAMP_MIPMAPLODBIAS //多级纹理级数偏移值,初始值为0D3DSAMP...
小 楼 一 夜 听 春 雨 阅读(673) |
摘要: IDirect3DDevice9::SetVertexDeclarationSets a Vertex Declaration (Direct3D 9).HRESULT SetVertexDeclaration( IDirect3DVertexDeclaration9 * pDecl);ParameterspDecl[in] Pointer to an IDirect3DVertexDeclaration9 object, which contains the vertex declaration.Return ValuesIf the method succeeds, the return.
小 楼 一 夜 听 春 雨 阅读(1078) |
摘要: 因为游戏里面绘制Ui,调用lock函数来lock数据buffer的时候用到了如下3个标志。D3DLOCK中D3DLOCK_NOSYSLOCKsdk中的原文是:The default behavior of a video memory lock is to reserve a system-wide critical section, guaranteeing that no display mode changes will occur for the duration of the lock. This option causes the system-wide critical sect
小 楼 一 夜 听 春 雨 阅读(870) |
摘要: 一篇不错的关于ogre相关技术的解释(转载)( 22:09:57)转载1.真是不错!国外廉价引擎评价最好的两个是Turque、Truevision3D,免费开源引擎评价最好的是OGRE和IrrLicht,综合考虑起来,OGRE还不是个完整的游戏引擎,它首先只是个图形渲染引擎,用着也比较麻烦;IrrLicht易用性最强,但是功能比较落后,因为作者现在只是一个人在开发;Turque商业气氛太浓,不掏钱搞不到SDK;相比之下Truevision3D是相当合适的一个,可以免费搞到他的SDK,并且无限版商业授权也才500美元。并且,拿到这个引擎之后最关心的,当然是它能不能显示中文,不
小 楼 一 夜 听 春 雨 阅读(229) |
摘要: 游戏中的动画对于创建所喜欢的模拟必不可少。当动画模拟人物模型时,手头上有大量可供选择的内容。近来,许多游戏都选择使用一种名为骨骼动画的技。骨骼动画是一种允许程序员借助名为骨骼或链接的节点层次结构动画模拟模型的技术。链接在一起的骨骼或链接而形成的层次结构就构成了骨架。这些骨架与网格连接在一起,可以制作出真实的动画模拟。过去,开发人员对人物及其他类似对象使用一种名位关键帧的动画模拟技术。在该技术中,开发人员需要为物体动画的每一帧存储整个网格的备份。必须预处理对象位置,这使得对象和外界或其他物理之间的实际交互变得非常困难。还记得射杀一个游戏角色时,它穿过墙和周围物体倒下的时刻么?例如,如果射杀一个靠
小 楼 一 夜 听 春 雨 阅读(2642) |
摘要: /lovedday/archive//23385.html大家都知道,一个3D 场景中,我们见到的任何光辉灿烂的物体,都是由一个一个面片组成的。而装载面片位置信息的就是其各个定点的三维坐标。这是用来在模型中存储的,而要把物体显示在屏幕上,还需要将它们转换成显示器上的二维坐标。这就需要对每个点实施一套 3 to 2 的转换公式,在Direct3D中叫做“几何流水线”(Geometry Pipeline)。每渲染一桢,我们都要用到这条流水线把所有定点的坐标转化成当前要显示的位置。不过放心,D3D不会改变你原有的顶点坐标,变换出的顶点数
小 楼 一 夜 听 春 雨 阅读(648) |
摘要: 在D3D中,一共有三种基本图元,分别是点、线和三角形。点是最简单的图元,由它可以构成一种叫点列(point list)的图元类型。线是由两个不重合的点构成的,一些不相连的线组成的集合就叫线列(line list),而一些首尾相连但不形成环路的线的集合就叫线带(line strips)。同理,单独的三角形集合就叫三角形列(triangle list),类似于线带的三角形集合就叫三角形带(triangle strips),另外,如果多个三角形共用一个顶点作为它们的一个顶点的话,那么这个集合就叫三角形扇(triangle fans)。还是画图比较容易理解吧: 这些图元有什么用呢?基本上我们可...
小 楼 一 夜 听 春 雨 阅读(1715) |
摘要: 直线:#include&d3d9.h&#include&d3dx9.h&#include&mmsystem.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#pragma comment(lib, &winmm.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Straight Line Animation&#defi
小 楼 一 夜 听 春 雨 阅读(246) |
摘要: 游戏引擎开发之路这条路很长,因为必需懂得和用到的东西太多了。学习次序1、率先是语言方面,这个问题未曾太多的抉择的余地,大约上是用C和C++;VB的也有,然而很少;C#因为微软的力挺,在游戏开发中也逐渐多了示例。打听大约语义和语法就能够下一步了。万一想C++学通晓了在往下学,估计就未曾时机往下学了,因为你的殷勤可能在这都花费了。这个的学习是要不时重复的,想一遍学好是不可能的。2、数据构造的知识。这是大约的,而且对于算法的优化,速度的晋级,在游戏开发中也是极为考究的。教程许多,关键还是自己的思忖和掌握。3、Visual Studio 环境的利用。这个比拟容易然而却极其重要,万一连筷子都不会用,想吃
小 楼 一 夜 听 春 雨 阅读(281) |
摘要: 12.4 使用UMF文件为
创建的最终模型格式(Ultimate Model Format,UMF),它的模型文件作为一种常用的文件格式,用于保存几何图形数据。该文件格式是一种简单的二进制格式,可以保存顶点位置、纹理坐标、法线值、顶点颜色和三角形索引。UMF文件格式旨在创建静态网格并将其显示在屏幕上。将来,还会有其他版本可以指定动画信息的格式。UMF格式在得到广泛使用。该文件格式使用简单,既包含了小的静态对象和角色,也包含了大的静态对象和角色。同样还提供了一种创建自己的
小 楼 一 夜 听 春 雨 阅读(457) |
摘要: token.h#ifndef _UGP_TOKEN_H_#define _UGP_TOKEN_H_class CToken{public: CToken() : m_length(0), m_startIndex(0), m_endIndex(0), m_data(0) {} ~CToken() { Shutdown(); } void Reset(){ m_startIndex = m_endIndex = 0; } void SetTokenStream(char *data); bool GetNextToken(char *buffer); bool...
小 楼 一 夜 听 春 雨 阅读(913) |
摘要: 接下来要介绍的模型文件格式是OBJ格式。该格式非常流行,而且可以使用大量3D建模软件导出。OBJ是一种简单的格式,它是可以用任何文本编辑器打开和保存的文本文件。准确的说,OBJ文件并不是设计用于处理与动画相关的信息,但如果有一个需要快速加载到场景中的静态对象,OBJ也许会有用。已经被导出OBJ格式的模型由顶点、法线、纹理坐标和三角形索引(外观)组成。因此,在OBJ格式中将不为除了简单静态网格之外的任何对象使用模型。【注意】 使用由不同类型软件导出的OBJ文件时一定要慎重。例如,用Lightwave7.5创建的OBJ文件就不同于3D Studio Max导出的OBJ文件。试着用为稍有不同类型文件
小 楼 一 夜 听 春 雨 阅读(1729) |
摘要: 在现代游戏中,人物和模型由针对每个对象的成千上万个多边形组成。对纹理映射而言这非常复杂,因为它需要为每个多边形的每个顶点设置一对TU和TV纹理坐标。假定有一个包含了5000个三角形的模型。假定不涉及加索引的几何图形(索引),而只使用三角形,那么在整个模型中将有15000个顶点。至此,除了内置的Direct3D以外,还得手动指定几何图形数据。如果一个模型包含5000个多边形,那么试着指定这些多边形中的每个几何图形数据,就会是一场噩梦。同时还要为顶点手动设置纹理坐标,从时间角度而言,这也是不可以接受的,并且绝对不现实。即使设法对所有模型都做了这一点,那么也会存在将这些信息硬编码到源代码中,以及其他
小 楼 一 夜 听 春 雨 阅读(1267) |
摘要: DirectSound和DirectMusic是DirectX中两个独立的声音API,它们都可以播放.wav声音(DirectMusic还可以播放.midi声音)。即便它们是独立的,这两种声音API也可以同时用于管理和操作声音数据、调整音廖、3D声音和效果。DirectSound能完成一些DirectMusic所不能完成的工作,反之亦然。所以在开发时需要同时使用两者。例如,DirectMusic需要使用DirectSound设置单个声音文件的音量、音调和摇摄,因为它自己不能完成这个工作。在介绍这两种API作为声音接口完成任务的函数、原型和结构之前,下面几个部分将详细介绍DirectSound和
小 楼 一 夜 听 春 雨 阅读(117) |
摘要: 游戏项目第9部分:增加输入系统该游戏项目将添加对引擎和主菜单的支持。引擎项目中出现的三个新文件分别是InputInterface.h、DirectInput.h和DirectInput.cpp。第一个文件InputInterface.h用于定义输入系统和输入设备基类的头文件。每个类都提供了派生类需要实现的默认函数。基类中的每个成员函数都是从DirectInput演示程序中提取出来的相同类。实际上,所有这些代码都很相似。在该输入系统和为演示程序创建的输入系统之间的唯一差别在于该输入系统将事情按照各自的类分开处理,而不是包含在一个巨大的类中一起处理。InputInterface.h#ifndef
小 楼 一 夜 听 春 雨 阅读(208) |
摘要: 初始化DirectInput系统,这仅需调用DirectInput8Create()函数即可.HRESULT WINAPI DirectInput8Create( HINSTANCE hinst, // 实例句柄 DWORD dwVersion, // 版本标识符 REFIID riidltf, // 输入系统的唯一标识符 LPVOID * ppvOut, // 指向正在创建的输入系统对象指针 LPUNKNOWN punkOuter // IUnKnown相关接口指针 ); 如果调用成功,D...
小 楼 一 夜 听 春 雨 阅读(439) |
摘要: 第一个新文件是BoundingGeometry.h头文件。该头文件包含了3个类和两个函数。第一个类是边界几何图形基类,创建其他边界几何图形时可以从该类派生。第二个类是边界框类,第三个是边界球类。头文件中的两个函数分别是BoxToBoxIntersect()和SphereToSphereIntersect()。这两个函数分别用于检测两个方框和两个球体之间的碰撞。每个类中的成员函数分别是CreateFromPoints()、isPointInside()、两个Intersect()、GetPlanes()和isRayInside()。在创建涉及的边界几何图形时,会用到CreateFromPoint
小 楼 一 夜 听 春 雨 阅读(126) |
摘要: 在3D虚拟世界中检测碰撞?如果世界是由多个动态物体构成的,充满了成万或成千万的三角形,那么如何用一种快速有效的方式检测和避免可能发生的碰撞?要解决这个问题其实并不简单。使用数学运算检查两个三角形之间是否存在碰撞,非常消耗CPU,同样对于射线到三角形的测试也是如此。假想一下,如果一个三角形需要很大的CPU开支,那么几千个或几百万个三角形将会立刻摧毁所有现代处理器的性能。在游戏开发中实现某些事物的最快方法是采用捷径,并在必要时使用近似值。如果问题可以简化为一个更容易处理、计算更快的形式,那么有可能实现某一种技术而不会影响程序性能,而这是在长时间做某件事情时才会出现的情况。然而这样做会产生新问题:使
小 楼 一 夜 听 春 雨 阅读(919) |
摘要: 要介绍的引擎中出现的第一个新文件是mathDefines.h头文件。该文件保存了所有的define语句,这些语句是数学库、引擎及游戏都要用到的内容。这些define语句包含了π(圆周率,圆的周长与直径的比值)的定义、平面结果和将度转换成弧度的宏。该文件随着本书的深入而不断扩充,但目前它非常小,只包含几个define语句。程序清单8.30给出了mathDefines.h头文件的内容。mathDefines.h头文件#ifndef _UGP_MATH_DEF_H_#define _UGP_MATH_DEF_H_#define UGP_FRONT 0#define UGP_BACK 1...
小 楼 一 夜 听 春 雨 阅读(316) |
摘要: 平面是一个无限扩展的区域。读者可以将其形象化为沿着上下两个方向无限扩展的平面墙。如果很难理解平面这个概念,那么试着考虑一下宇宙。想象一样,宇宙非常平而且沿着所有其他边不断无限扩展的情况。虽然屏幕区域有限,但可以在屏幕上绘制平面,因为只要对有限数量的像素做阴影处理即可。然而,在Direct3D和OpenGL中并没有内置渲染平面的方法。所以,如果不能渲染平面,那就会出现问题,即平面到底对谁有好处?关于这个问题,答案有很多。最常见的一个答案就是几何图形选择和碰撞检测有了几何图形选择,就可以创建一个平面或一系列平面,而这取决于几何图形位于平面的哪一侧,并可以快速确定是否需要绘制该对象。因为这可以很大程
小 楼 一 夜 听 春 雨 阅读(393) |
摘要: 矢量是游戏开发中涉及到的最基本的对象。矢量有多种形式,可以是2D、3D或4D等。3D矢量是一个包含3个浮点数的结构,每个值代表矢量中不同的轴。这些值分别是x、y和z轴,可用于描述三维空间。矢量用于描述3D空间中的方向,它可能也是最常用的数学对象。矩阵是游戏开发中第二个最常用的数学对象。矩阵主要用于将矢量从一个坐标系转换到另一个坐标系,还可用于旋转和平移。矩阵由浮点数的2D数组组成。3&#215;3矩阵由3行、3列共9个元素组成,4&#215;4矩阵是由4行、4列共16个浮点元素组成的2D数组。四元组用于描述旋转。四元组是由4个浮点数w、x、y、z构成的结构,像4D矢量。虽然矩阵也可用于旋转,但
小 楼 一 夜 听 春 雨 阅读(697) |
摘要: 实际上根据为引擎添加脚本支持的要求,目前要做的工作是将本章创建的文件复制到Stranded引擎的文件夹中。这些文件分别是CommandScript.h、CommandScript.cpp、PropertyScript.h、PropertyScript.cpp、Token.h和Token.cpp。每个类都可以独立工作,所以转换工作就非常简单。
小 楼 一 夜 听 春 雨 阅读(78) |
摘要: 文件是由分开的不同文本块组成的。这些文本可用作命令、属性名称、字符串、数字等。所使用的这些内容有一个共同点,即它们是用分隔符分开的。分开的每一组文本称为一个令牌。文件可以由许多令牌组成,每个令牌都有自己的用途和含义。在不考虑出现令牌原因的情况下,令牌只是一些文本。如果愿意的话,有时可以将文件分隔成一系列令牌——令牌流——这是一种很好的做法。如果读者曾经研究过更高级类型的脚本,实际上就会发现这只是为了将脚本编译成一种更低级形式而要做的一些工作。也许在创建命令和属性脚本系统时,已经使用过令牌流。虽然有一种获取信息的方法,但如果本该使用令牌流而没有使用,那么这个方法就不是很清晰。例如,对属性脚本而言
小 楼 一 夜 听 春 雨 阅读(182) |
摘要: 命令脚本是一种在文件中包含许多命令的脚本。命令脚本和属性脚本非常相似,除了每一行第一个单词所代表的意思不同之外。在基于命令的脚本中,通常要有一个文件,并且会解释该文件,直到文件执行到结束或是出现错误为止。伪代码:Open the script file and get the line count.Create an array of strings for each line.In the application loop through each line.Get the command and check if it is invalid or a comment.if valid, g
小 楼 一 夜 听 春 雨 阅读(113) |
摘要: script.spt# This is an example of a comment.teapotColor 0.0 0.0 1.0cameraPosition 0.0 0.0 -5.0# These are not used but are here to test loading strings and ints.totalTeapots 1description This just a teapot in a 3D scene! PropertyScript.h#ifndef _UGP_PROPERTY_SCRIPT_H_#define _UGP_PROPERTY_SCRIPT_H_.
小 楼 一 夜 听 春 雨 阅读(114) |
摘要: 为了启动项目,这里将在defines.h文件中为想要在引擎中使用的雾和多采样功能添加几个define语句。对雾而言,将使用想要创建的雾的枚举类型。对多采样而言,将使用可以支持的多采样枚举类型。对该引擎而言,这里将支持非多采样、2倍、4倍、8倍和16倍速率采样等几种采样类型。雾枚举类型的名称是UGP_FOG_TYPE,而多采样枚举类型的名称是UGP_MS_TYPE。更新后的defines.h文件如程序清单6.15所示。注意在defines.h文件末尾处添加枚举类型,由于该文件的其他内容已经介绍过,因此这里没有列出。程序清单6.15 更新后的defines.h头文件#ifndef _UGP_DEF
小 楼 一 夜 听 春 雨 阅读(248) |
摘要: 粒子系统保存和操纵一种称为粒子的元素。粒子系统的职责就是对粒子施加不同的作用力,为它们增加一种真实的外观。粒子系统的类型包括爆炸、烟、火、火花等,而其他类型的效果可由许多小的元素构成。粒子是一个小物体,包含多种属性,如位置、速度(方向)和质量。游戏中,粒子通常是添加了纹理的小正方形,通常面向摄象机。在实现点状sprite时已经介绍过这一点。点状sprite可以由粒子系统使用,从而有效地生成多种不同的效果。粒子系统示例如图6.5所示。通常,粒子相互之间独立作用,但却限制在粒子系统范围内。例如,所有的粒子也许从相同位置开始或从比较接近的位置开始,但它们都有自己的属性,将彼此分隔开。同样,通常在游戏
小 楼 一 夜 听 春 雨 阅读(252) |
摘要: 通常会多次要在3D场景中显示大量的细节。例如,混凝土上的裂纹,或粗糙墙面的凸凹不平之处。也许并不总是想在纹理图像自身包含这种细节。通常,一些彩色图纹理虽然从远处看的时候它们很好,但靠近看时,也许会让观察者觉得有些模糊。使用一种名为细节映射的技术有助于解决这些问题,或至少得到改善。细节图是一个灰度图,保存小而精确的细节内容。当将其和颜色图一起施加到表面上时,最终的图像看上去原始图像好像有更多的细节。同样,使用细节图时,颜色图在从上靠近看时,看上去不模糊。使用细节图为表面增加细节,给图增加小的裂纹以及线条,这样可以提高表面的真实感。对墙和类似表面更是如此。细节映射的演示成名为DetailMappi
小 楼 一 夜 听 春 雨 阅读(116) |
摘要: 为3D场景增加雾会得到更真实的渲染效果。雾可以增加大量真实感,尤其对地形、树林地区以及幽灵般的户外背景。同样,雾可以很好地限制观察者对环境的可见度。现实中并不存在无限的视觉距离。事实上,这就是虚拟环境的一个镜像。通过限制观察距离,同样可以限制发送给管道的多边形数目。这对于提高渲染时间更有用。如果读者还记得PS游戏机上的第一个游戏《寂静岭》(Silient Hill),该游戏物景中有许多雾,很难看到外面的事物,除非是事物就在游戏玩家的面前,就可以很清楚地了解这一点。Direct3D中有两类硬件雾可用:顶点雾和像素雾。顶点雾是按照每个顶点来计算雾的数据,而像素雾根据像素级别计算雾的数据。由于通常像
小 楼 一 夜 听 春 雨 阅读(1363) |
摘要: 1 多采样 (抗锯齿)全景抗混叠是一种减少在渲染多边形的边时所产生的参差不齐效果的方法。抗混叠物体也会对渲染后的整个场景产生负面影响,尤其是处理动画更是如此。通过实现对像素的本地模糊处理,并在屏幕上显示出一个平均结果而实现全景抗混叠。在Direct3D中启用多采样将实现程序中的抗混叠。多采样将对程序性能的影响很大。这种性能影响取决于所选的样本数,所以在考虑更多的样本数时,一定要牢记这一点。采样数越高,渲染的场景质量就越好。样本最大数取决于支持它的硬件。某些硬件根本不支持多采样,而有一些硬件也许可以支持多大4倍速率的采样,还有一些可以支持8倍速率或更高的采样率。在Direct3D 9.0中,多采
小 楼 一 夜 听 春 雨 阅读(832) |
摘要: main.h头文件包含了用于GUI系统和控件的define语句。这里将在游戏源文件中添加3个新函数,它们分别是InitializeMainMenu()、MainMenuCallback()和MainMenuRender()。其中InitializeMainMenu()由GameInitialize()函数调用,将整个GUI的主菜单加载到内存中。MainMenuRender()由GameLoop()函数调用,借助渲染系统将主菜单显示在屏幕上。函数MainMenuCallback()是GUI系统的回调函数,对按钮动作做出响应。main.h#ifndef _UGP_MAIN_H_#define _U
小 楼 一 夜 听 春 雨 阅读(228) |
摘要: GUI系统将主要由按钮和静态文本控件对象构成。同样,可以指定和按钮、文本一起显示的背景图。GUI系统是2D的。这意味着指定对象位置时,用不到Z轴。另外,使用正交投影方式渲染GUI,这样可以根据像素位置指定屏幕位置,而不是使用标准单位来指定屏幕位置。回忆一下(0,0)对应的是屏幕的左上角。在Windows系统中,左上角同样是(0,0)。有了该信息,就可以轻松地确定玩家的鼠标指针是否在要创建的GUI系统的控件上或是正在按该控件。只要在规划按钮和文本位置时,记得左上角是(0,0),就能创建任何限制在系统范围内的GUI。当涉及到背景图时,没必要考虑它的位置,因为该图像是一个由两个三角形构成的全屏图像。
小 楼 一 夜 听 春 雨 阅读(381) |
摘要: // FPS info.// FPS相关变量int g_fps = 0; // FPS帧率值char g_fpsStr[16] = {0}; // 存放帧率值float g_time = 0.0f; // 系统运行时间float g_lastTime = 0.0f; // 持续的时间// 计算帧率void GetFPS(){ // Get the second in millisecond then multiply it to convert to seconds. // g_time获取操作系统启动到现在所经过的毫秒数,乘以0.001f得...
小 楼 一 夜 听 春 雨 阅读(848) |
摘要: 为了在一个基本层次上显示文本,要用到两个不同的对象,即LPD3DXFONT和RECT这两个结构。LPD3DXFONT用于创建和显示文本,而RECT用于确定要显示的文本位置。为了创建LPD3DXFONT对象,就要用到一个名为D3DXCreateFont()的函数。该函数原型如程序清单5.1所示。其成员变量如下:■ Height:字体字符的高度■ Width:字体字符的宽度■ Weight:打印字体的权重(即:粗体)■ MipLevels:文本的Mipmap级别■ Italic:字体是否为斜体■ Charset:用到的字符集■ OutputPrecision:指定Windows与期望字体大小的匹配
小 楼 一 夜 听 春 雨 阅读(1886) |
摘要: 24.的程序代码源于书籍附带光盘,运行得不到正确结果,由于bool InitializeObjects(),void RenderScene()这2个函数中的代码所致。先看这2个函数,原来的代码如下:bool InitializeObjects(){ // Setup the g_Light source. g_Light.Type = D3DLIGHT_DIRECTIONAL; g_Light.Direction = D3DXVECTOR3(0.0f, 0.0f, 1.0f); g_Light.Diffuse.r = 1; g_Light.Diffuse.g =...
小 楼 一 夜 听 春 雨 阅读(317) |
摘要: main.h main.cpp 无变化define.h#ifndef _UGP_DEFINES_H_#define _UGP_DEFINES_H_#include&windows.h&// Boolean values.#define UGP_INVALID -1#define UGP_OK 1#define UGP_FAIL 0// Light type defines.#define LIGHT_POINT 1#define LIGHT_DIRECTIONAL 2#define LIGHT_SPOT 3// Window handle (...
小 楼 一 夜 听 春 雨 阅读(300) |
摘要: 游戏中应用的例子:游戏中打开观察人物的界面,UI上显示的人物就是通过这种方式绘制出来的。渲染到纹理是D3D中的一项高级技术。一方面,它很简单,另一方面它很强大并能产生很多特殊效果。 比如说发光效果,环境映射,阴影映射,都可以通过它来实现。渲染到纹理只是渲染到表面的一个延伸。我们只需再加些东西就可以了。首先,我们要创造一个纹理,并且做好一些防范措施。第二步我们就可以把适当的场景渲染到我们创建的纹理上了。然后,我们把这个纹理用在最后的渲染上。 ?main.cpp 首先我们得声明所需要的对象。当然我们需要一张用来渲染的纹理。此外,我们还需要两个Surface对象。一个是用来存储后台缓冲区,一个用..
小 楼 一 夜 听 春 雨 阅读(1075) |
摘要: 此两个参数有2个函数用到:HRESULT CreateDepthStencilSurface( UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle);的第四个参数。HRESULT D3DXCreateTexture( LPDIRECT3DDEVICE9 pDevice, UINT Width,...
小 楼 一 夜 听 春 雨 阅读(250) |
摘要: 修改view矩阵,例如:D3DXMATRIX g_ViewMfloat g_RotationAngle = 0.0f;g_RotationAngle += 0.0002f;if(g_RotationAngle &= 360) g_RotationAngle = 0.0f;D3DXMATRIXA16D3DXMatrixRotationY(&w, g_RotationAngle);g_ViewMatrix *=g_D3DDevice-&SetTransform(D3DTS_VIEW, &g_ViewMatrix);也就是眼睛摄像机的位置不停地绕着
小 楼 一 夜 听 春 雨 阅读(226) |
摘要: 通常在图形编程中,需要能够将场景渲染到纹理上,并且针对某些目的可以使用这些纹理,例如,也许想在游戏中有一个安全监视器,游戏中间有一个电视屏可以在不同的位置显示游戏的状态。这对游戏玩家而言,非常有用,并且可以在很大程度上提高程序的真实感。同样,也可以使用幕外渲染技术创建映射、阴影映射纹理和大量如场地模糊、夜视、热视力、高精度动态范围渲染等许多不同的后处理效果。在Direct3D中实现幕外渲染需要创建幕外表面,并对其渲染而不是渲染到常用的后台缓存中。然后将渲染结果存储在贴在幕外表面上的纹理图像中。并且可以像所有常用的纹理图像一样使用。要增加幕外渲染功能,只要创建一个LPDIRECT3DSURFAC
小 楼 一 夜 听 春 雨 阅读(1275) |
摘要: 在图形应用程序中,读者也希望为显示在屏幕上的内容保存一幅屏幕截图。这非常有用。幸运的是,在Direct3D中创建和保存屏幕截图非常简单明了。为了实现该功能,需要获取当前已渲染好的场景宽度和高度,创建Direct3D表面,将渲染后的场景复制到创建好的表面对象中,然后调用一个Direct3D函数将表面保存到Direct3D支持的文件格式中。该文件格式可以是前面讨论过的任何标准文件类型,如.jpg、.tga或.bmp。这意味着为了保存程序屏幕截图,就要使用4个函数。1.首先要获取当前的显示模式。这样就可以获取像渲染场景宽度和高度这样的信息。2.接下来,要创建一个幕外表面。该表面用于存储已渲染好的场景
小 楼 一 夜 听 春 雨 阅读(1009) |
摘要: 使用Direct3D创建凸凹贴图在Direct3D中创建凸凹纹理贴图是非常简单的过程。使用D3DX函数D3DXComputeNormalMap()即可将Direct3D支持的所有图像格式转换成凸凹贴图。使用Direct3D函数计算法线贴图的最大优势就是在使用这些图片时,不需要知道图的生成方式。同样,还可以使用另一个D3DX函数D3DXSaveTextureToFile(),将新生成的凸凹贴图保存到文件中。D3DXComputeNormalMap()函数原型非常简单,参数pTexture是保存法线贴图的Direct3D纹理对象。参数pSrcTexture是想要转换成法线贴图的原始图像。参数pSr
小 楼 一 夜 听 春 雨 阅读(646) |
摘要: GetLevelDesc函数在MSDN中:Retrieves a level description of a texture resource.HRESULT GetLevelDesc( UINT Level, D3DSURFACE_DESC * pDesc);ParametersLevel[in] Identifies a level of the texture resource. This method returns asurface description for the level specified by this parameter.pDesc[out] Pointer to
小 楼 一 夜 听 春 雨 阅读(801) |
摘要: 在游戏开发的早期,游戏都是2D的。这些2D游戏通常有带有sprite特征和对象的滚动背景。游戏中的sprite只是显示在屏幕上的物体的2D图像。通过轻微改变对象,可以让这些sprite产生动画,从而有一种运动的外观,而这与卡通动画系列中所做的工作一样。如果读者曾经见过一本活页书,就会对sprite动画有一个明确的了解。动画的每一帧代表了每幅图像轻微的变化。例如,想象有一幅人物静静站着的图像,然后下一系列的人物图像是他的腿慢慢的抬起。要一直这样做,只到有一幅人物走动的完整动画为止。从本质上讲,sprite只是一个2D图像集合,它使用alpha通道,分解图像中希望不可见的像素。为了让sprite显
小 楼 一 夜 听 春 雨 阅读(585) |
摘要: 在将图像施加到表面时,并非图像的所有部分都是可见的。例如,如果有一幅叶子的图像,并且只想看到图像中实际构成叶子的那一部分内容,而不是空的场景,就需要使用名为“透明度”的技术,以帮助实现预期效果。有了透明度,就可以设置图像的一些像素可见,而另一些像素不可见。 使用RGBA纹理图像中的Alpha成分或顶点颜色的alpha成分可以控制透明度。同样,可以将像素设为半透明,而不是可见或不可见。这意味着图像的某些部分在某种程度上是可见的,而某种程度上像玻璃一样是可以看穿的。这对于像菜单或GUI对象、窗口、X射线视觉等这样的东西而言非常有用。控制图像的alpha通道或是顶点颜色的alpha通道可以控制显示给
小 楼 一 夜 听 春 雨 阅读(325) |
摘要: 多纹理贴图的基本要素就是使用多个纹理。创建和加载多个Direct3D纹理对象即可实现。当使用硬件多纹理渲染纹理时,要为每个顶点指定两套纹理坐标。这只需在顶点结构中另外添加两个浮点成员变量即可完成,即在FVF中用D3DFVF_TEX2替换D3DFVF_TEX。code:#include&d3d9.h&#include&d3dx9.h&#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &D3D Multi-Texture Mapping&#define WINDOW_WIDTH 640#d
小 楼 一 夜 听 春 雨 阅读(974) |
摘要: 纹理映射是一种将图形施加到表面的技术。以简单的一堵墙为例,这种技术可以只需要两个绘制有砖纹理的三角形即可。这样就可以为表面增加大量的细节,而不必使用大量的多边形。纹理映射使用了图像数据并将图像数据绘制(映射)到表面上。该表面看上去就像有一幅图在它上面。所以,如果有一堵墙,并将砖块的纹理施加到这堵墙上面,那么即便只是这个表面使用了两个三角形,它看上去也像场景中的一堵墙。 Direct3D中的纹理就是一幅映射到表面上的图像,这样可以让表面显示比实际上更多的细节。在3D场景中实现纹理映射,最常见的方法是从外部文件加载图像数据。该文件可以存在于硬盘、软盘或光盘等载体上,同样该文件可以在场景中的多个表.
小 楼 一 夜 听 春 雨 阅读(4655) |
摘要: 该游戏项目一开始先创建名为light.h、material.h的两个文件。light.h头文件用于创建灯源结构,该结构用于创建Direct3D中的灯源对象。以某种方式实现该结构,这样也可将其用于OpenGL或其他渲染系统。光源结构模仿了Direct3D中的D3DLIGHT结构,所以它们是完全兼容的。light.h#ifndef _UGP_LIGHT_H_#define _UGP_LIGHT_H_struct stLight{ stLight() { type = 0; posX = 0, posY = 0, posZ = 0; dirX = 0, dirY...
小 楼 一 夜 听 春 雨 阅读(159) |
摘要: 在Direct3D中创建光源相对比较简单,因为只是为了使用光源,而不需要知道太多Direct3D内部使用的算法。所以即使对先前光照和阴影的讨论一头雾水,也不用担心。有一些亲自实践的经历之后,读者就可以使用Direct3D中的光照,而不必知道它的工作机理或自己动手计算光照方程。默认情况下,即使没有指定任何光源,Direct3D也会打开硬件光照。到目前为止,都是将其设置为FALSE,那是因为还没有用到光照。在初始化中调用SetRenderState()函数,并将该函数的参数D3DRS_LIGHTING设为FALSE。 为了在Direct3D中创建光源,必须创建一个D3DLIGHT对象。为了方便..
小 楼 一 夜 听 春 雨 阅读(684) |
摘要: #include&d3d9.h&#include&d3dx9.h&#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Built-in Direct3D Shapes&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void RenderScen
小 楼 一 夜 听 春 雨 阅读(1627) |
摘要: 通常在计算机图形学中有三类光源需要考虑,分别是点光源、聚光光源和方向性光源。每类光源分别描述了日常生活中见到的不同类型的光。例如,点光源可以是某个距离上向所有方向发光的任何光源,如灯泡;聚光光源通过圆锥发光,如闪光灯;而方向光则是从特定的方向,但是无法辨别的光源处发光。【注意】 方向光不同于点光和聚光的是,现实世界中并没有这样的光。另一方面,在计算机图形学中,它们确实存在而且可以由数学计算得到。 1. 点光源如本章前面所提到的一样,点光源是一种在某个距离上向所有方向发光的光源。随着光传播一定的距离,它会损失一定的能量而且亮度也会逐渐降低。可以将点光源认为是灯泡、蜡烛,或是在一定距离上可以发光的
小 楼 一 夜 听 春 雨 阅读(552) |
摘要: 工程GameProject1: main.h, main.cpp这两个文件用于创建游戏Stranded。工程GameEngine:RenderInterface.h, D3DRenderer.h, D3DRenderer.cpp, engine.h, defines.h.D3DRenderer.h和D3DRenderer.cpp用于创建Direct3D渲染系统;RenderInterface.h文件是一个基类,D3DRenderer就是从该类派生出来的;engine.h和defines.h包含了游戏引擎中要用到的Define(定义)、Function Prototype(函数原型)、Enume
小 楼 一 夜 听 春 雨 阅读(428) |
摘要: 2.3 引擎规划 和当今的商业游戏引擎相比较而言,本书中这个构建在游戏上的游戏引擎,显得微不足道。游戏Stranded的引擎小到足以包含在单独一个库中。由于游戏引擎取决于开发人员的需求,因此开发或分割游戏引擎的正确方法不止一种。通常,最好是将无关的系统分割成不同的动态链接库(DLL),这样可以更方便地将改动过的软件更新、修改和重新发布给用户。如果有任何类型的更新,那么将全部.exe文件重新发布给已经购买该款游戏的用户很不经济。只要开发人员重新发布一个动态链接库(DLL)(只是整个语系中的一小部分),那么效率将会提高很多。虽然现在的宽带Internet使得下载更新信息的速度比过去快很多,但目前所
小 楼 一 夜 听 春 雨 阅读(286) |
摘要: #include&d3d9.h&#include&d3dx9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Template&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool InitializeD3D
小 楼 一 夜 听 春 雨 阅读(286) |
摘要: 使用诸如Direct3D这样的渲染API在屏幕上渲染图形时,就会碰到所谓的“透支”(指的是渲染全景造成的内存浪费)问题。当在屏幕上绘制交迭(重爹)的两个或多个图元时,就会出现透支。这些图元有不同的位置,但在屏幕上渲染时,它们交迭在一起。因为Direct3D不知道要绘制的图元的先后顺序,所以会出现透支问题。Direct3D不仅不知道是哪个图元遮住了哪个图元,而且还不知道是哪个图元部分遮住了其他物体。解决透支问题的一个办法是使用一种名为“深度缓存或z缓存”的缓存。深度缓存是一个后台缓存,它类似于OpenGL和Direct3D这样的API渲染,存储场景深度信息。当绘制图元时,将物体的深度信息和深度缓
小 楼 一 夜 听 春 雨 阅读(675) |
摘要: #include&d3d9.h&#include&d3dx9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &View Matrix&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool Initialize
小 楼 一 夜 听 春 雨 阅读(423) |
摘要: #include&d3d9.h&#include&d3dx9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &World Matrix&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool Initializ
小 楼 一 夜 听 春 雨 阅读(455) |
摘要: 无论计算机图形技术如何发展,只要它以二维的屏幕作为显示介质,那么它显示的图像即使多么的有立体感,也还是二维的。有时我会想,有没有以某个空间作为显示介质的的可能呢,不过即使有,也只能是显示某个范围内的图像,不可能有无限大的空间作为显示介质,如果有,那就是现实世界了。 既然显示器的屏幕是二维的,那么我们就要对图像作些处理,让它可以欺骗我们的眼睛,产生一种立体的真实感。在D3D中,这种处理就是一系列的空间变换,从模型空间变到世界空间,再变到视图空间,最后投影到我们的显示器屏幕上。&#183;世界空间与世界矩阵 什么是模型空间呢?每个模型(3D物体)都有它自己的空间,空间的中心(原点)就是模型的中心。
小 楼 一 夜 听 春 雨 阅读(5128) |
摘要: #include&d3d9.h&#include&d3dx9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Perspective Projection Matrix&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes
小 楼 一 夜 听 春 雨 阅读(1067) |
摘要: #include&d3d9.h&#include&d3dx9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Ortho Projection Matrix&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...boo
小 楼 一 夜 听 春 雨 阅读(1563) |
摘要: /lovedday/archive//48632.html投影变换将摄影空间中的三维物体投影到二维胶片上,也就是Direct3D中的屏幕,这种三维到二维的变换过程就是投影变换,即从取景空间到摄影空间的变换。设三维物体在观察空间中的坐标为Pview,投影矩阵为Mproj,则顶点在投影空间中的坐标为:Pproj= Pview* Mproj下面分别介绍两种基本的投影变换:正交投影和透视投影,以及它们在Direct3D中的实现。1、正交投影正交投影中,投影向量和观察平面垂直,物体坐标沿观察坐标系的z轴平行投影到观察平面上,观察点和观察平面
小 楼 一 夜 听 春 雨 阅读(1841) |
摘要: #include&d3d9.h&#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Drawing a Quad&// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void RenderScene();void Shutdown();// Direct3D object and device.LPDIRECT3D9 g_D3D = NULL;LPDIREC
小 楼 一 夜 听 春 雨 阅读(173) |
摘要: #include&d3d9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Drawing a Triangle&// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void Ren
小 楼 一 夜 听 春 雨 阅读(135) |
摘要: #include&d3d9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Drawing Lines&// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);bool InitializeObjects();void RenderSc
小 楼 一 夜 听 春 雨 阅读(850) |
摘要: #include&d3d9.h&#include&d3dx9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Template&#define WINDOW_WIDTH 640#define WINDOW_HEIGHT 480// Function Prototypes...bool InitializeD3D
小 楼 一 夜 听 春 雨 阅读(197) |
摘要: #include&d3d9.h&#pragma comment(lib, &d3d9.lib&)#pragma comment(lib, &d3dx9.lib&)#define WINDOW_CLASS &UGPDX&#define WINDOW_NAME &Blank D3D Window&// Function Prototypes...bool InitializeD3D(HWND hWnd, bool fullscreen);void RenderScene();void Shutdown();
小 楼 一 夜 听 春 雨 阅读(149) |
摘要: IDirect3D* WINAPI Direct3DCreate9(UINT SDKVersion //版本号); //创建Direct3D9接口对象HRESULT IDirect3D::GetDeviceCaps(UINT Adapter, //显卡号(一般为D3DADAPTER_DEFAULT)D3DDEVTYPE DeviceType, //设备类型(一般为D3DDEVTYPE_HAL)D3DCAPS9* pCaps //返回设备功能信息); //本机显示卡功能检测HRESULT IDirect3D::GetAdapterDisplayMode(UINT Adapter, //显卡号D3
小 楼 一 夜 听 春 雨 阅读(401) |
摘要: 3.3.1 透视投影透视投影最显著的特征就是透视缩短,物体距离照相机越远,它在最终图像中看上去就越小。这是因为透视投影的视景体可以看成是一个金字塔的平截头体(顶部被一个平行于底面的平面截除)。位于视景体之内的物体被投影到金字塔的顶点,也就是照相机或观察点的位置。靠近观察点的物体看上去更大一些,因为和远处的物体相比,它们占据了视景体中相对较大的区域。这种投影方法常用于动画、视觉模拟以及其他要求某种程度的现实感的应用领域,因为它和我们在日常生活中观察事物的方式相同。glFrustum()函数定义了一个平截头体,它计算一个用于实现透视投影的矩阵,并把它与当前的投影矩阵(一般为单位矩阵)相乘。记住,视
小 楼 一 夜 听 春 雨 阅读(2002) |
摘要: D3DXIntersectTri 求三角形与射线相交D3DXVECTOR3vec1(-10,0,-10);D3DXVECTOR3vec2(0,0,10);D3DXVECTOR3vec3(10,0,-10);D3DXVECTOR3vecOrg(0,10,0);D3DXVECTOR3vecDir(0,-2,0);//求射线长度D3DXVECTOR3_vecDD3DXVec3Subtract(&_vecDir,&vecDir,&vecOrg);floatdis_Ray=D3DXVec3Length(&_vecDir);D3DXVec3Normalize(&amp
小 楼 一 夜 听 春 雨 阅读(542) |
摘要: 转自/lancidie/archive//2052094.html学习D3D,应该对这三个内存理解,网上收集了一下相关资料,收藏下来。三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来,在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是设置显
小 楼 一 夜 听 春 雨 阅读(203) |
摘要: 用矩阵变换3-D向量,并且用w = 1投影结果。定义:D3DXVECTOR3*WINAPID3DXVec3TransformCoord(D3DXVECTOR3*pOut,CONST D3DXVECTOR3*pV,CONST D3DXMATRIX*pM);ParameterspOut[in, out]指向D3DXVECTOR3结构的操作结果。pV[in]指向D3DXVECTOR3结构的向量。pM[in]指向D3DXMATRIX结构的变换矩阵。Return Value指向D3DXVECTOR3结构的变换后的向量。说明:这个函数用矩阵pM变换3-D向量pV(x, y, z, 1),并且用w = 1投
小 楼 一 夜 听 春 雨 阅读(517) |
摘要: 从三点构造一个平面方程。定义:D3DXPLANE*WINAPID3DXPlaneFromPoints(D3DXPLANE*pOut,CONST D3DXVECTOR3*pV1,CONST D3DXVECTOR3*pV2,CONST D3DXVECTOR3*pV3);参数:pOut[in, out]指向D3DXPLANE的平面方程。pV1[in]指向D3DXVECTOR3结构的向量,用来构造平面的一个点。pV2[in]指向D3DXVECTOR3结构的向量,用来构造平面的一个点。pV3[in]指向D3DXVECTOR3结构的向量,用来构造平面的一个点。返回值:指向D3DXPLANE结构的平面方程,
小 楼 一 夜 听 春 雨 阅读(134) |
摘要: D3DXVec3TransformCoord 函数用矩阵变换3-D向量,并且用w = 1投影结果。定义:D3DXVECTOR3*WINAPID3DXVec3TransformCoord(D3DXVECTOR3*pOut,CONST D3DXVECTOR3*pV,CONST D3DXMATRIX*pM);ParameterspOut [in, out]指向 D3DXVECTOR3 结构的操作结果。 pV [in]指向 D3DXVECTOR3 结构的向量。 pM [in]指向 D3DXMATRIX 结构的变换矩阵。 Return Value指向 D3DXVECTOR3 结构的变换后的向量。说明:这
小 楼 一 夜 听 春 雨 阅读(1189) |
摘要: TGA(Tagged Graphics)文件 TGA是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形、图像工业所接受。现在已成为数字化图像,以及运用光线跟踪算法所产生的高质量图像的常用格式。TGA文件的扩展名为.tga。TGA的结构比较简单,属于一种图形、图像数据的通用格式,目前大部分文件为24位或32位真彩色,在多媒体领域有着很大影响。由于Truevision公司推出TGA的目的是为了采集、输出电视图像,所以TGA文件总是按行存储、按行进行压缩的,这使得它同时也成为计算机生成图像向电视转换的一种首选格式。使用photoshop软件可以打开此类文件。结构 TG
小 楼 一 夜 听 春 雨 阅读(1570) |}

我要回帖

更多关于 d3d透视dll 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信