DirectX9.0 入门手册(4)

       第一次写这种文章,再加上自己也是菜鸟,虽然有部分内容是参考一些书籍及自己翻译一些英文文章所写出来的,但我相信文章里面肯定也还有很多bug,如果你发现了请告诉我,或者你有什么想法也可以和我交流,我诚心和志同道合的人成为朋友,我的QQ61010818,我的邮箱fowenler@126.com

·D3D中的图元简介

       D3D中,一共有三种基本图元,分别是点、线和三角形。点是最简单的图元,由它可以构成一种叫点列(point list)的图元类型。线是由两个不重合的点构成的,一些不相连的线组成的集合就叫线列(line list),而一些首尾相连但不形成环路的线的集合就叫线带(line strips)。同理,单独的三角形集合就叫三角形列(triangle list),类似于线带的三角形集合就叫三角形带(triangle strips),另外,如果多个三角形共用一个顶点作为它们的一个顶点的话,那么这个集合就叫三角形扇(triangle fans)。还是画图比较容易理解吧:

       这些图元有什么用呢?基本上我们可以使用这些图元来画我们想要的任何物体。例如画一个四方形可以使用三角形带来画,画一个圆则使用三角形扇。

       现在介绍一种不需要顶点缓冲来渲染的方法,就是使用IDirect3DDevice9::DrawPrimitiveUP函数。UP就是User Pointer的意思,也即是说要使用用户定义的内存空间。

HRESULT DrawPrimitiveUP(

    D3DPRIMITIVETYPE PrimitiveType,

    unsigned int PrimitiveCount,

    const void *pVertexStreamZeroData,

    unsigned int VertexStreamZeroStride

);

 

 

 

       PrimitiveType要绘画的图元的种类。就是上面介绍的那六种类型。

PrimitiveCount要绘画的图元的数量。假设有n个顶点信息,绘画的图元类型是点列的话,那么图元的数量就是n;如果绘画的图元类型是线列的话,那么图元的数量就是n/2;如果是线带的话就是n-1;三角形列就是n/3;三角形带就是n-2;三角形扇出是n-2

pVertexStreamZeroData存储顶点信息的数组指针

VertexStreamZeroStride顶点的大小

·使用顶点缓冲来绘画图元

很多时候我们使用顶点来定义图形之后,就把这些顶点信息放进顶点缓冲里面,然后再进行渲染。使用点顶缓冲的好处以及如何创建顶点缓冲我已经在上一章已讲过了,现在讲讲怎么把顶点缓冲里面的图元给画出来。其实也很简单,和上面的IDirect3DDevice9::DrawPrimitiveUP函数差不多,我们使用IDirect3DDevice9::DrawPrimitive函数。不过在使用这个函数之前,我们得告诉设备我们使用哪个数据源,使用IDirect3DDevice9::SetStreamSource函数可以设定数据源。

HRESULT SetStreamSource(

   UINT StreamNumber,

   IDirect3DVertexBuffer9 *pStreamData,

   UINT OffsetInBytes,

   UINT Stride

);

 

 

 

       StreamNumber设置和哪个数据流梆定。如果使用单数据流的话,这里设为0。最多支持16个数据流。

pStreamData要绑定的数据。也就是我们创建的顶点缓冲区里面的数据。

OffsetInBytes设置从哪个字节开始读起。如果要读整个缓冲区里面的数据的话,这里设为0

Stride单个数据元素的大小。如果数据源是顶点缓冲的话,那么这里就是每个顶点信息的大小(Sizeof(vertex))。

设置好数据源后,就可以使用IDirect3DDevice9::DrawPrimitive来绘画了。

HRESULT DrawPrimitive(

   D3DPRIMITIVETYPE PrimitiveType,

   unsigned int StartVertex,

   unsigned int PrimitiveCount

);

 

 

 

PrimitiveType要绘画的图元的种类。

StarVertex 设置从顶点缓冲区中的第几个顶点画起。没有特殊情况当然是想把全部的顶点画出来啦,所以一般这里设置从0开始。

PrimitiveCount要绘画的图元的数量。

 

 

 

好了,这章比较简单。写到这章的时候我才发现这不是入门手册,有一些重要但是我觉得没必要讲的东西我都没有讲明。如果是新手看我写的这些东西,搞不好还会被我迷惑了,呵呵。所以还是建议大家看DXSDK里面的说明文档,虽然是英文的,但是很详细,我现在都还没有看完呢。

       嗯,前面四章把最基本的东西讲完了,使用前面的知识我们可以画一些简单的静止图形。下一章就开始讲矩阵了,它可以使我们的图形动起来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DirectX 9.0是一套多媒体应用程序接口(API)的集合,它由微软公司开发和维护。它提供了一系列的图形和音频功能,用于开发Windows操作系统上的游戏和多媒体应用程序。 然而,DirectX 9.0是在比较早期的Windows版本中发布的,随着时间的推移,微软逐渐推出了新版的DirectX,比如DirectX 10和DirectX 11。目前,Windows 10已经内置了最新的DirectX 12版本。 尽管如此,Windows 10仍然保留了与DirectX 9.0兼容的功能,并且可以在其上运行DirectX 9.0应用程序。这是由于Windows 10的兼容性考虑,尽可能使旧版的应用程序能够在新的操作系统上正常运行。 对于那些需要在Windows 10上运行DirectX 9.0应用程序的用户,他们需要安装DirectX 9.0的运行时库,以确保其正确的执行。虽然在一些较新的系统上(如Windows 7、8、8.1)中,这些库已经安装,但在某些情况下,用户可能需要手动安装它们。 总结来说,DirectX 9.0是一套由微软开发的多媒体应用程序接口集合,用于开发Windows操作系统上的游戏和多媒体应用程序。虽然Windows 10内置了DirectX 12,但仍然能够兼容并运行DirectX 9.0应用程序。用户可能需要手动安装DirectX 9.0的运行时库,以确保应用程序的正确执行。 ### 回答2: DirectX 9.0是由微软开发的一款多媒体编程接口,是游戏和多媒体应用程序在Windows平台上进行编程和呈现的基础。而Win10是微软最新发布的操作系统版本。那么在Win10操作系统中,DirectX 9.0的兼容性和使用情况如何呢? 对于DirectX 9.0在Win10中的兼容性来说,它可以在Win10操作系统上正常运行,但需要进行额外的设置。尽管Win10预装了较新的DirectX 12版本,但DirectX 9.0是向下兼容的,这意味着它可以运行DirectX 9.0的游戏和应用程序。但由于DirectX 9.0是较旧的版本,因此在Win10上使用可能会遇到一些兼容性问题,例如在图形和性能方面可能会受到限制。 为了在Win10上使用DirectX 9.0,用户可以手动下载和安装DirectX 9.0c End-User Runtime,这是DirectX 9.0的最新版本。安装后,用户可以在Win10上运行DirectX 9.0的游戏和应用程序,并享受其提供的功能和效果。 此外,对于某些较旧的游戏和应用程序,它们可能要求在Win10上使用DirectX 9.0来保持最佳的兼容性和性能。在这种情况下,用户可能需要在Win10上创建一个虚拟机或双系统,以便在另一个操作系统上安装和运行DirectX 9.0。 总结起来,DirectX 9.0在Win10中是兼容的,但可能会遇到一些兼容性问题。用户可以安装DirectX 9.0c End-User Runtime来解决这些问题。另外,一些较旧的游戏和应用程序可能需要使用DirectX 9.0来保持最佳兼容性和性能。 ### 回答3: DirectX 9.0是由微软推出的图形与多媒体编程接口。它是一个软件框架,用于在Windows操作系统上进行高性能的游戏和多媒体应用程序的开发。 而Windows 10是微软最新推出的操作系统版本。Win10中已经内置了DirectX 12,这是目前最新的DirectX版本。相比于DirectX 9.0DirectX 12在性能和功能上都有显著的提升。 然而,在Windows 10中仍然可以运行使用DirectX 9.0开发的应用程序。这是因为Windows 10兼容性很好,可以支持不同版本的DirectX,并且为了向后兼容,微软提供了DirectX 9.0的运行时组件。 对于使用DirectX 9.0的应用程序来说,虽然在Win10上可以正常运行,但可能存在一些性能和兼容性的问题。因此,如果有使用DirectX 9.0开发的应用,建议开发者对其进行适配和优化,以确保在新的操作系统上获得最佳的性能和用户体验。 总之,DirectX 9.0可以在Windows 10上运行,但DirectX 12是更先进的版本,提供了更好的性能和功能。对于开发者来说,推荐使用最新的DirectX版本以获得更好的开发体验和应用性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值