3D游戏菜鸟之路
GameRefer
这个作者很懒,什么都没留下…
展开
-
如何推导视景体的6各面
如何推导视景体的6各面 2012-07-05 14:54:27| 分类:3D游戏学习笔记 | 标签:|字号大中小 订阅 一般我们都是计算在世界坐标中的六个面,由于我们知道的是,在透视坐标中,每个坐标系都有固定的范围,而透视坐标所显示的范围正好为我们计算世界坐标中的六个面。 我们知道,在透视坐标中,x(-1.0f,1.0f),y(-1.0f,1.原创 2012-08-03 07:54:14 · 923 阅读 · 0 评论 -
指向类的数据成员和函数指针(转)
转自:http://blog.csdn.net/xudacheng06/article/details/6764156指向类成员的指针在C++语言中,可以定义一个指针,使其指向类成员或成员函数,然后通过指针来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。à 指向数据成员的指针在C++语言中,可以定义一个指针,使其指向类成员。当属性成员为静态和非静态时,指针的使用也有不转载 2012-08-03 08:11:02 · 576 阅读 · 0 评论 -
条款38: 决不要重新定义继承而来的缺省参数值(有味道的一条)
让我们从一开始就把问题简化。缺省参数只能作为函数的一部分而存在;另外,只有两种函数可以继承:虚函数和非虚函数。因此,重定义缺省参数值的唯一方法是重定义一个继承而来的函数。然而,重定义继承而来的非虚函数是一种错误(参见条款37),所以,我们完全可以把讨论的范围缩小为 "继承一个有缺省参数值的虚函数" 的情况。既然如此,本条款的理由就变得非常明显:虚函数是动态绑定而缺省参数值是静态绑定的。什么原创 2012-08-03 08:11:43 · 647 阅读 · 0 评论 -
关于在vector中为什么要reserve?
帖子:http://topic.csdn.net/u/20090407/15/a3feb00f-774b-4c0f-90ab-8e0c84a8b6d4.html 关键点:reserve是必须的如果没有的话,push_back的之后,当内存不够了,就会有内存的重新分配和元素的拷贝。这是绝对很低效的。 如果 vector 的容量不够了,它会1. 重新分配更多的空间(一般是增原创 2012-08-03 08:12:23 · 907 阅读 · 0 评论 -
D3D游戏关于窗口中如何精确确定鼠标位置的相关讨论
在GameDev中的相关贴子:(1)http://www.gamedev.net/topic/623813-getting-mouse-position/里面有几句很重要的话:How do you create your application window?A common mistake is to choose some backbuffer resolution (for原创 2012-08-03 07:55:45 · 1885 阅读 · 0 评论 -
barycentric coordinates(质心坐标)
我们知道,一条线段的两个端点是Pa和Pb,那么我们可以知道线段间的所有点坐标即:Pt=U*Pa+V*Pb //(U+V=1 ) (U,V) =t*Pa+(1-t)*Pb //(U=t,V=1-U);那么(U,V)即是某点的质心坐标,例如Pa是(1,0),Pb是(0,1) 类推三角形也有类似公式假如三角形三顶点是Pa,Pb,Pc,那么我们也可以写出其内部原创 2012-08-19 20:09:31 · 2167 阅读 · 0 评论 -
副法线的来由(binormal)
Any given vertex has a tangent space as defined in Figure 12.4. The normal of thevertex that you’re already familiar with points out from the triangle. The tangent andthe binormal, on the other ha翻译 2012-08-19 20:11:41 · 6950 阅读 · 0 评论 -
BumpMap、NormalMap的区别 (转)
一种是Emboss Bump Map(浮雕凹凸贴图),它使用的是Height map,原理是在原始图像的基础上,对高度场图像进行复制、轻微平移、差操作。但它存在很多严重的局限性,它只能用于漫反射表面,对于镜面高光来说是不可能的。当光源直接照射在物体表面时,如果没有偏移,那么物体表面就不会出现任何凹凸现象。 DOT3 Bump Map(点乘凹凸贴图),它使用的是Normal Map,这是目前转载 2012-08-19 20:12:20 · 2768 阅读 · 0 评论 -
法线贴图
Since the tangent-space normal map is calculated as an offset of the surfacenormal, it remains largely uniform in color (depicted in the image as gray)(由于切线空间计算的是表面法线的偏移量,所以它保留的是一些比较均匀的颜色(在图中用灰色表示))翻译 2012-08-19 20:11:04 · 788 阅读 · 0 评论 -
D3DXIntersect
HRESULT D3DXIntersect( LPD3DXBASEMESH pMesh, //Mesh to test,要检测的网格模型 CONST D3DXVECTOR3 * pRayPos, //Ray origin,射线的起点 CONST D3DXVECTOR3 * pRayDir,翻译 2012-08-26 08:20:43 · 1323 阅读 · 0 评论 -
IDE使用问题:vc2003中类型无法转到声明和定义,按F12提示未定义的符号(CSDN一个帖子)
最好的解决方法是:删掉.ncb文件,然后重新打开转载 2012-08-03 08:05:31 · 1210 阅读 · 0 评论 -
在《Advanced Animation with DirectX》由于SDK升级带来的麻烦,与代码修正
写过Advanced Animation with DirectX书里代码的都知道,在现在的DX9.0c中并没有IDirectXFile、IDirectXFileEnumObject、IDirectXFileData 、IDirectXFileDataReference等对象,你在网上到处都可以找见这种类型的错误,关键是如何解决,这里因为新版SDK支持的com对象是ID3DXFile、 ID3D原创 2012-08-03 08:00:12 · 1582 阅读 · 0 评论 -
在C/C++中关于局部数组问题(子函数等)
在子函数中,定义的数组变量是不允许返回的,因为它只是临时变量,暂存与当前堆栈里面,只要函数调用结束,数组马上被释放。 但当有时我们需要返回有关数据的指针或数组时,有几种方法可以解决:(1)我们直接把给函数传进数组指针的参数,也就是说你在调用之前先创建数组,作为参数传递进函数,然后返回例 读取文件的一行数据char * getFileOneLine(char *fileName,原创 2012-08-03 08:06:09 · 1948 阅读 · 0 评论 -
关于DX中三角形顶点顺序的问题(绕序)
在DX中,在创建顶点缓存后,是将顶点坐标写入缓存中,在用数据流或加索引来显示三角形时,你的顶点顺序很重要,当然这与背面消除(注:背面消除指的是,假如你背对着相机那么相机看不见你的正面,难么你的正面将被消除,因为看不见,所以要剔除掉)有很大的关系。DX中默认使用的左手坐标,默认左手按顶点顺时针所指向的方向是三角形的正面方向。在程序中你可以指定,哪个方向是顶点顺序是正方向,Device->SetRen原创 2012-08-03 08:02:26 · 3679 阅读 · 0 评论 -
关于D3DFVF_XYZRHW使用Shader的帖子
(1)此贴中明确给出使用上面的顶点标志,会跳过VertexShader阶段http://www.gamedev.net/topic/551769-hlsl-and-d3dfvf_xyzrhw/ (2)http://www.gamedev.net/topic/620189-using-effect-shader-on-rhw-vertices/关键词:D3DFVF_XYZR翻译 2012-08-03 07:57:46 · 879 阅读 · 0 评论 -
D3DFVF顶点定义顺序
//-------------------------------------------------------------------// Flexible vertex format bits//#define D3DFVF_RESERVED0 0x001#define D3DFVF_POSITION_MASK 0x400E#define D3DFVF翻译 2012-08-03 07:58:24 · 1508 阅读 · 0 评论 -
DX中为什么没有D3DRS_ZFAILD
因为在DX中只有D3DRS_STENCILZFAIL,因为在模板开启下要模板测试成功才会执行Z测试,而在模板断臂的情况下直接测试Z即可,可能是DX不想引入更多的枚举值,而且也为了强调缓存测试顺序,所以只有D3DRS_STENCILZFAIL而没有D3DRS_ZFAILD。这只是我的猜测,所以信不信就只能由你了!原创 2012-08-03 07:58:59 · 445 阅读 · 0 评论 -
typedef int int_array[4](转)
转自:http://hi.baidu.com/sword0228/item/f9c0089ed23653da1e42716btypedef int int_array[4]; int ia[3][4]={1,2,3,4,5,6,7,8,9,0,11,12}; int_array *ip=ia; int ia[3][4]={1,2,3,4,5,6,7,8,9,0,11,12}转载 2012-08-03 08:10:32 · 1213 阅读 · 1 评论 -
HLSL着色器可接受的输入输出语义
顶点着色器These semantics have meaning when attached to a vertex-shader parameters. Thesesemantics are supported in both Direct3D 9 and Direct3D 10.InputDescriptionTypeBINORMAL[n]翻译 2012-08-03 07:51:51 · 876 阅读 · 0 评论 -
D3DVERTEXELEMENT9的详细解释
struct D3DVERTEXELEMENT9 {WORD Stream; //Stream NoWORD Offset; //Start of this element in bytesBYTE Type; //Element type (float1 ... float4, D3DCOLOR, etc.)BYTE Method; //Tesselation methodB翻译 2012-08-03 07:52:42 · 2430 阅读 · 0 评论 -
二倍镜实现
一种方案,直接变换我们的透视投影矩阵,因为透视变换时,就是分别使x,y,z投影下来,就但说x,y,下面是透视矩阵xScale 0 0 00 yScale 0 00 0 zf/(zf-zn) 10 0原创 2012-08-03 07:53:15 · 863 阅读 · 0 评论 -
关于Z(Depth 深度)和Stencil(模板)两种测试对后台缓存的影响次序
http://www.gamedev.net/topic/451617-how-the-stencil-buffer-works/ The order of operations goes like this (assuming the stencil test is enabled):1) Perform stencil test. If failed, perform Stenci原创 2012-08-03 07:55:01 · 1639 阅读 · 0 评论 -
VS和PS寄存器的分配
在VertexShader中寄存器设置如下图:在图1.1的右边部分,是临时寄存器,用来储存顶点着色器计算出的中间结果。显然,由于它们是临时性的,因此,可以对这些寄存器进行写入和读取操作。注意名称为a0到aL的寄存器,它们是循环时用来索引地址和追踪循环所用的计数寄存器(counter register)。记住,由于HLSL是一门高级的着色语言,你不需要关心寄存器是如何分配的。对开发者来说这个过程转载 2012-08-03 08:00:59 · 1578 阅读 · 0 评论 -
DX9实现天空盒
对于天空盒如何制作,我这里就不介绍了,网上有好些制作天空盒的资料,也可看我的其它转载关于天空盒的资料。这里只讲一种简单的方法实现天空盒。这种方法的基于,网上http://blog.csdn.net/xoyojank/article/details/1628932这里提出的用D3DFVF_XYZRHW实现天空盒的想法。不过有个问题,D3DFVF_XYZRHW本身会跳过坐标变换的阶段,也就是说它不会传原创 2012-08-03 07:56:57 · 1793 阅读 · 0 评论 -
仿射坐标与齐次坐标
这是我们经常使用的两种坐标,我们用DX来创建顶点结构是,有这两种坐标假如FVF使用的是D3DFVF_XYZ时,我们就说我们用的是齐次坐标,齐次坐标表示我们只用3个分量来表示顶点在世界中的位置。顶点示例struct Vertex{ float x,y,z;}奇怪!!难道还有第四个坐标?-------没错! 难道使用4维空间,第四维不是时间吗????----不是原创 2012-08-03 08:01:50 · 2262 阅读 · 0 评论 -
NavMesh,关于导航网格的创建
在《人工智能游戏编程真言》中,有详细的叙述如何建立导航网格,但是却没有一丁点的代码,而且在创建过程中,还有许多细节问题没有解决,在百度文库中有一篇关于AS3建立导航网格的文章,里面也讲的很好,但是那里使用三角形作为节点,这显然对于多边形较多的3D世界不太合适。不过里面的A*寻路算法的相关取值是值得观看的。进行了几个礼拜的编写,导航网格稍微能看我先给几张截图,让大家有个底!可以生成多边形的网格节点,原创 2012-10-25 15:54:50 · 2743 阅读 · 1 评论