我最近一直在做D3D游戏的视角,他遇到了很多麻烦,花了很多时间来解决。
关于代码错误的问题。但是好事多磨。我取得了一些成绩。在编写代码的过程中,
参考了大量的DirectX编程资料。同时也在国外N个论坛上出了名。
真正接触到了党,我学习并掌握了一些D3D节目的基本知识,实现了透视。我放在这里
把自己的经历和研究过程中的一些体会大致整理了一下,只是希望能找到。
对D3D感兴趣的朋友可以一起学习,不多说。让我们开始我们的教程。(描述
想象一下,我把下面的内容逐字打出来,没有复制粘贴)
在阅读本教程之前,你最好有一些C++的基础知识,你也需要一些基本的d。
irectX编程的基础。我的教程分为两部分。第一部分主要讲视角。
原因。第二部分主要讲透视dll的制作过程。
首先我们来看第一部分,主要讲解了透视的一些原理。
在讲透视之前,我们先讲一下什么是Z轴缓冲。
z轴缓冲区是DirectX中的成像元素之一。它是一个深度缓冲区,用于确定。
在计算机图形学中,渲染对象的明暗关系有时由硬件完成,有时由。
软件完成。在观察渲染对象时,有这样一个问题。如果一个对象在另一个中
如果一个物体在观察者后面并且离他很远,我们就看不见它。z轴减速
拉什也是一个深度缓冲。
上面说的可能有点抽象,我就直说了吧:Z轴缓冲就是告诉相机,比如
如果他在一个物体后面,那就不需要显示了。如果他在对象前面,就需要显示出来。
男性…
现在,根据上面的内容,你可能会说Z轴缓冲器被禁用以实现透视。但是事实
事实并非如此。你会注意到你会看到一切,甚至是场景之外的东西。
这意味着您必须找到一个对象,并在选择该对象时禁用Z轴缓冲。这是:
跨距(数据流中每个顶点占用的内存大小)、数量(渲染的顶点电缆
Lead span)和PrimitiveCounts(渲染图元的数量)。
以上三个决定了你看到墙(物)的时候想看到什么,大多数情况下都是这样。
人物模型(就是我想做一个人物视角)
如果直接禁用Z轴缓冲,则是满刻度透视,A已经玩过了。
大家都知道全比例透视可以用在冷冻工厂,但是在其他地图上,或者可以这么说
在他的游戏中,整个画面的透视效果很差,所以要实现人物的透视,必须找到游戏中的人。
物理模型表示。比如CF的人物模型表现为44和40,还有A(战地之王的人物模型)
符号是32),所以说人物透视,一定要找到人物模型。
然后禁用z轴缓冲。
现在让我们禁用Z轴缓冲。首先,定义人物模型logo。
#定义玩家身体(stride = = 44 | | stride = = 40)//注意这个& # 34;||
"意思是“或者”。这意味着& # 34;PlayerBody相当于44或者40。
//Stride这里是游戏中的角色模型logo。
好了,上面的代码定义了角色模型的身份,现在我们将启动D3D9中的Dr。
修改游戏中角色模型的渲染状态的函数。
下面的代码是在钩子上的DrawIndexedPrimitive函数。
复制代码
1.
lpdirect 3d vertexbuffer 8 Stream _ Data;
UINT Stride = 0;
if(m _ pd3d dev-& gt;GetStreamSource(0 & amp;数据流& amp步幅)== D3D_OK)
stream _ Data->;发布();
If(Chams)// chams这里是视角切换if(Player)。
{
{
//一旦游戏中Stride的值等于设定值,就会执行下面的代码:DrawIndexedPrim。
原始(设备,类型,最小索引,数量,起始索引,原始计数
t);
//墙后面是绿色装置-& gt;SetRenderState( D3DRS_ZENABLE,false);
设备->;SetTexture( 0,tex green);
//禁用z轴缓冲区drawindededprimitive(device,type,minindex,numverti)
ces,StartIndex,PrimitiveCount);
//如果游戏模型在墙的前面(也就是你能看到它)设备-& gt;SetRenderState( D3DRS_ZEN
能干,真实);
//打开Z轴缓冲区,填充蓝色器件–>;SetTexture( 0,tex blue);
DrawIndexedPrimitive(设备,类型,最小索引,数量,开始
Index,primitive count);
}
}
让我们继续:
如果你想知道透视着色的代码是如何工作的,它是通过消息队列来操作的。。
以下是他的工作流程:
如果要显示一个字符:
将字符涂成红色。
启用Z轴缓冲,当它在对象前面时是红色的。
禁用z轴缓冲
当它在物体后面时,它是黄色的。
禁用模板着色器。(这个我还没看懂)
然后像这样重复。说到重复,有人会问,什么是重复?我简单说一下。
游戏渲染角色模型时,是逐帧渲染的,每张图片都放在显存里。
图像从备份缓冲区到前台缓冲区,并显示在屏幕上。比喻就像放映幻灯片。
电影。速度慢的时候可以看成一个一个的,速度快的时候可以看成一个连续的画面。
所以上面的渲染过程每秒至少要执行24次,否则画面会卡顿。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。