首页 游戏交流文章正文

战地之王透视_战地之王上架steam

游戏交流 2021年12月20日 05:46 5731 admin

迩来从来在弄D3D玩耍的透视,被他弄得狼狈不堪,很多功夫都花在领会决

代码缺点的题目上。然而工夫不负蓄意人我博得了少许功效,在编写代码的进程

傍边参见了洪量的DirectX编制程序上面的材料。同声也在海外N多乒坛做了一个名

副本来的伸手党,领会和控制了D3D步调实行透视的少许普通常识。在这边我把

我本人在接洽进程中的心得领会和少许体味大概整治了一下,不过蓄意不妨找到

对D3D感爱好的伙伴不妨共通接洽,话不多说了,底下发端我们的教程。(证明

一下,底下的实质都是我一个字一个字敲出来的,没有复制粘贴)。

在看这篇教程之前,你更佳有少许基础的C++的常识,其余还须要少许基础的D

战地之王透视_战地之王上架steam  第1张

irectX编制程序的普通。我的教程呢分为两个局部,之一局部呢重要讲少许透视原

理。第二局部重要讲透视dll的创造进程。

开始来看之一局部,主假如解说少许透视的道理,

在讲透视之前开始来说一下什么是Z轴缓冲

Z轴缓冲即是DirectX中的成像元素之一 ,他是一个深度缓冲,用来确定

衬托东西的隐蔽联系 ,在计划机图形学中, 有功夫经过硬件实行,有功夫经过

软硬件实行。 在查看被衬托东西的功夫就展示如许一个题目, 即使一个东西在另

一个东西的反面,而且隔绝查看者的隔绝较远那么咱们是看得见他的。 Z轴缓

冲也即是深度缓冲。

上头说的大概有点笼统我就直白的说一下吧: Z轴缓冲即是要报告摄像机,如

果他在一个东西的反面,就不必表露它了 ,即使他在这个东西前方,就得表露

他。

此刻按照上头所说的,你大概要说把Z轴缓冲禁止使用来实行透视即是了。但事究竟

况并不是如许。你会提防到,你会看到一切的货色以至再有场景除外的货色也就

是说你必需找到某一个东西,再选这个东西的功夫来禁止使用Z轴缓冲。这即是:

Strides(数据流中每个极点所占外存的巨细), NumVertices(衬托的极点索

引的跨度),和 PrimitiveCounts(衬托的图元个数)。

上头这三个就确定了透视到墙(物体)后你想看到的货色,在大局部情景下即是

人物模子(也即是想弄人物透视)

即使径直禁止使用Z轴缓冲的话,那即是全图透视了,玩过AVA

的都领会全图透视在冰冻工场是不妨运用的,然而在其余舆图,大概不妨说在其

他玩耍里,全图透视功效是很差的,以是要实行人物透视就必需找到玩耍中的人

物模子表白。比方,CF的人物模子表白为44和40,AVA(疆场之王的人物模子

标识为32),以是咱们说的人物透视是必需找到人物模

型的表白而后再禁止使用Z轴缓冲

底下咱们来禁止使用Z轴缓冲了。开始把人物模子标识来设置一下

#define PlayerBody ( Stride == 44 || Stride == 40 )// 提防这个 " ||

" 是“或”的道理。道理即是说"PlayerBody 等价于 44大概是40。

//这边的Stride即为玩耍中的人物模子标识,

好了,上头的代码是对人物模子的标识举行了设置,底下就要发端D3D9中的Dr

战地之王透视_战地之王上架steam  第2张

awIndexedPrimitive因变量来窜改玩耍经纪物模子的衬托状况

底下的的代码即是在hook the DrawIndexedPrimitive 这因变量之中

复制代码

1.

LPDIRECT3DVERTEXBUFFER8 Stream_Data;

UINT Stride = 0;

if (m_pD3DDev->GetStreamSource(0, &Stream_Data, &Stride) == D3D_OK)

Stream_Data->Release();

if(Chams)//这边的chams是透视电门 if(Player)

{

{

//一旦玩耍中Stride的值即是所设定的值,就发端实行以次代码: DrawIndexedPrim

itive(Device, Type, MinIndex, NumVertices, StartIndex, PrimitiveCoun

t);

//在墙反面即是绿色 Device->SetRenderState( D3DRS_ZENABLE,false );

Device->SetTexture( 0, texGreen );

//禁止使用Z轴缓冲 DrawIndexedPrimitive(Device, Type, MinIndex, NumVerti

ces, StartIndex, PrimitiveCount);

//玩耍模子在墙前方的话(即是不妨瞥见) Device->SetRenderState( D3DRS_ZEN

ABLE, true );

//翻开Z轴缓冲,并弥补为蓝色 Device->SetTexture( 0, texBlue);

DrawIndexedPrimitive(Device, Type, MinIndex, NumVertices, Start

Index, PrimitiveCount);

}

}

咱们连接:

即使你想领会透视上色的代码是怎样运转的,它是经过动静部队举行操纵的。.

底下即是他的处事过程:

即使人物要被表露:

给人物上色为赤色.

起用Z轴缓冲, 在物体前方的功夫为赤色。

禁止使用Z轴缓冲

在物体反面的功夫就为黄色

Disable stencil shaders.(这个我姑且还没搞懂)

而后如许连接反复。说到反复,有人就会问了,什么是反复。我大略地说一下吧。

玩耍在衬托人物模子的功夫,是一帧一帧的举行衬托的,放在显存中的中的每幅

图像从后备缓冲区到前台缓冲区并表露到屏幕上。打个局面的比方,比如放幻灯

片。速率慢了,不妨看成是一张一张的,当速率很快时,就不妨看成贯串的画面。

以是上头的衬托进程起码每秒要实行24次,要否则画面就会很卡。

标签: 战地之王透视

发表评论

大金游戏网Copyright Your WebSite.Some Rights Reserved. 备案号:黑ICP备2021006842号-1