精华内容
参与话题
问答
  • Direct3D简介

    千次阅读 2009-12-28 13:49:00
    Direct3D简介 Direct 3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API。可绕过图形显示接口(GDI)直接进行支持该API的各种硬件的底层操作,大大提高了图形处理速度。 D3D在系统中的位置 D3D ...

    Direct3D简介

     

    Direct 3D是基于微软的通用对象模式COMCommon Object Mode)的3D图形API。可绕过图形显示接口(GDI)直接进行支持该API的各种硬件的底层操作,大大提高了图形处理速度。

     

    D3D在系统中的位置

     

     

    D3D Device分为 硬件抽象层设备(HAL Device)和参考设备(REF Device)。前者支持硬件加速的光栅化和软件、硬件顶点处理,与硬件相关,用于最后的发布版本。后者以软件模拟方式完成三维处理,速度慢,但是与硬件无关,可用于效果的测试。


     

     

     

     

    Direct3D 9图形管道

     

     

     

    Vertex Data未经转换的模型的顶点数据,存放在顶点内存缓冲里。

     

     

    Primitive Data基本几何数据(包括点、线、三角形以及多边形),它们存放在索引缓冲区中,被顶点数据所引用。

     

     

    Tessellation:一种细化模型技术。实际上Tessellation就是把一些粗大无序的几何模型图形分成很多更小的图形,从而实现更细致的几何模型表现。可以将低细节模型转换为高细节效果。当然用高细节建模也可以达到同样的效果;不过执行速度只有Tessellation的几分之一。而且建模复杂量还高出几百倍。

     

    效果对比:

     

            低细节模型                                        使用Tessellation之后的高细节效果

     

     

    性能对比:

     

    由图像效果和执行效率上来看,Tessellation是一个提高画质的至关重要的技术。

     

     

    Vertex Processing顶点处理。对顶点缓冲里的数据进行一些转换。

     

     

    Geometry Processing几何处理。对经过转换了的顶点进行剪切、背面挑选、评估属性以及光栅化处理。

     

     

    Textured Surface给表面附加纹理。为D3D的表面添加纹理坐标。

     

     

    Texture Sampler纹理取样。对输入的纹理值进行细节级别的过滤。

     

     

    Pixel Processing像素处理。像素渲染器(Pixel shader)使用几何数据来修改输入的顶点和纹理数据,从而得到像素颜色值。

     

     

    Pixel Rendering像素渲染。最后的渲染过程要经过 透明度(alpha)混合, 深度(depth)测试, 以及模板(stencil)测试 之后得到了最终的像素值,并将其显示到显示器上。

     

     

     

    展开全文
  • Direct3D好,还是OpenGL好呢?

    千次阅读 2004-09-28 10:05:00
    Q: Direct3D好,还是OpenGL好呢?A: 当你去OPENGL网站问时,肯定说是OPENGL好,如果去D3D网站问时,肯定是说D3D好。其实上,这两个API都是做同样的事情,都是基于同样的硬件尽可能加速,没有谁好谁坏,只要你选择一...

    Q: Direct3D好,还是OpenGL好呢?

    A: 当你去OPENGL网站问时,肯定说是OPENGL好,如果去D3D网站问时,肯定是说D3D好。其实上,这两个API都是做同样的事情,都是基于同样的硬件尽可能加速,没有谁好谁坏,只要你选择一个自己感觉良好的API就好了。每个API只要你发挥到极点,都可以做出同样的水平游戏。

    展开全文
  • Direct3D11学习:(零)常见问题及解决方法整理

    Direct3D11学习:(零)常见问题及解决方法整理

    参考文章:

    (1)Direct3D11学习:(零)常见问题及解决方法整理

    (2)http://www.cnblogs.com/ray1024/p/6066549.html


    备忘一下。


    展开全文
  • DirectX11 Direct3D基本概念

    千次阅读 2015-09-27 19:58:53
    Direct3D基本概念 1. Direct3D概述 Direct3D是一种底层绘图API(application programming interface,应用程序接口),它可以让我们可以通过3D硬件加速绘制3D世界。从本质上讲,Direct3D提供的是一组软件接口,...

    Direct3D基本概念
    1. Direct3D概述
    Direct3D是一种底层绘图API(application programming interface,应用程序接口),它可以让我们可以通过3D硬件加速绘制3D世界。从本质上讲,Direct3D提供的是一组软件接口,我们可以通过这组接口来控制绘图硬件。例如,要命令绘图设备清空渲染目标(例如屏幕),我们可以调用Direct3D的ID3D11DeviceContext::ClearRenderTargetView方法来完成这一工作。Direct3D层位于应用程序和绘图硬件之间,这样我们就不必担心3D硬件的实现细节,只要设备支持Direct3D 11,我们就可以通过Direct3D 11 API来控制3D硬件了。

    支持Direct3D 11的设备必须支持Direct3D 11规定的整个功能集合以及少数的额外附加功能(有一些功能,比如多重采样数量,仍然需要以查询方式实现,这是因为不同的Direct3D硬件这个值可能并不一样)。在Direct3D 9中,设备可以只支持Direct3D 9的部分功能;所以,当一个Direct3D 9应用程序要使用某一特性时,应用程序就必须先检查硬件是否支持该特性。如果要调用的是一个不为硬件支持Direct3D函数,那应用程序就会出错。而在Direct3D 11中,不需要再做这种设备功能检查,因为Direct3D 11强制要求设备实现Direct3D 11规定的所有功能特性。

    2. 关于COM(组件对象模型)接口
    组件对象模型(COM)技术使DirectX独立于任何编程语言,并具有版本向后兼容的特性。我们经常把COM对象称为接口,并把它当成一个普通的C++类来使用。当使用C++编写DirectX程序时,许多COM的底层细节都不必考虑。唯一需要知道的一件事情是,我们必须通过特定的函数或其他的COM接口方法来获取指向COM接口的指针,而不能用C++的new关键字来创建COM接口。另外,当我们不再使用某个接口时,必须调用它的Release方法来释放它(所有的COM接口都继承于IUnknown接口,而Release方法是IUnknown接口的成员),而不能用delete语句——COM对象在其自身内部实现所有的内存管理工作。

    当然,有关COM的细节还有很多,但是在实际工作中只需知道上述内容就足以有效地使用DirectX了。

    注意:COM接口都以大写字母“I”为前缀。例如,表示2D纹理的接口为ID3D11Texture2D。

    3. 纹理和数据资源格式
    2D纹理(texture)是一种数据元素矩阵。2D纹理的用途之一是存储2D图像数据,在纹理的每个元素中存储一个像素颜色。但这不是纹理的唯一用途;例如, 有一种称为法线贴图映射(normal mapping)的高级技术在纹理元素中存储的不是颜色,而是3D向量。因此,从通常意义上讲,纹理用来存储图像数据,但是在实际应用中纹理可以有更广泛的用途。1D纹理类似于一个1D数据元素数组,3D 纹理类似于一个3D数据元素数组。但是在随后的章节中我们会讲到,纹理不仅仅是一个数据数组;纹理可以带有多级渐近纹理层(mipmap level),GPU可以在纹理上执行特殊运算,比如使用过滤器(filter)和多重采样(multisampling)。此外,不是任何类型的数据都能存储到纹理中的;纹理只支持特定格式的数据存储,这些格式由DXGI_FORMAT枚举类型描述。一些常用的格式如下:

    DXGI_FORMAT_R32G32B32_FLOAT:每个元素包含3个32位浮点分量。
    DXGI_FORMAT_R16G16B16A16_UNORM:每个元素包含4个16位分量,分量的取值范围在[0,1]区间内。
    DXGI_FORMAT_R32G32_UINT:每个元素包含两个32位无符号整数分量。
    DXGI_FORMAT_R8G8B8A8_UNORM:每个元素包含4个8位无符号分量,分量的取值范围在[0,1]区间内的浮点数。
    DXGI_FORMAT_R8G8B8A8_SNORM:每个元素包含4个8位有符号分量,分量的取值范围在[−1,1] 区间内的浮点数。
    DXGI_FORMAT_R8G8B8A8_SINT:每个元素包含4个8位有符号整数分量,分量的取值范围在[−128, 127] 区间内的整数。
    DXGI_FORMAT_R8G8B8A8_UINT:每个元素包含4个8位无符号整数分量,分量的取值范围在[0, 255]区间内的整数。

    注意,字母R、G、B、A分别表示red(红)、green(绿)、blue(蓝)和alpha(透明度)。每种颜色都是由红、绿、蓝三种基本颜色组成的(例如,黄色是由红色和绿色组成的)。alpha通道(或alpha分量)用于控制透明度。不过,正如我们之前所述,纹理存储的不一定是颜色信息;例如,格式DXGI_FORMAT_R32G32B32_FLOAT包含3个浮点分量,可以存储一个使用浮点坐标的3D向量。另外,还有一种弱类型(typeless)格式,可以预先分配内存空间,然后在纹理绑定到管线时再指定如何重新解释数据内容(这一过程与C++中的数据类型转换颇为相似);例如,下面的弱类型格式为每个元素预留4个8位分量,且不指定数据类型(例如:整数、浮点数、无符号整数):
    DXGI_FORMAT_R8G8B8A8_TYPELESS

    4. 交换链和页面交换
    为了避免在动画中出现闪烁,最好的做法是在一个离屏(off-screen)纹理中执行所有的动画帧绘制工作,这个离屏纹理称为后台缓冲区(back buffer)。当我们在后台缓冲区中完成给定帧的绘制工作后,便可以将后台缓冲区作为一个完整的帧显示在屏幕上;使用这种方法,用户不会察觉到帧的绘制过程,只会看到完整的帧。从理论上讲,将一帧显示到屏幕上所消耗的时间小于屏幕的垂直刷新时间。硬件会自动维护两个内置的纹理缓冲区来实现这一功能,这两个缓冲区分别称为前台缓冲区(front buffer)和后台缓冲区。前台缓冲区存储了当前显示在屏幕上的图像数据,而动画的下一帧会在后台缓冲区中执行绘制。当后台缓冲区的绘图工作完成之后,前后两个缓冲区的作用会发生翻转:后台缓冲区会变为前台缓冲区, 而前台缓冲区会变为后台缓冲区,为下一帧的绘制工作提前做准备。我们将前后缓冲区功能互换的行为称做呈现(presenting)。提交是一个运行速度很快的操作,因为它只是将前台缓冲区的指针和后台缓冲区的指针做了一个简单的交换。
    这里写图片描述
    (我们首先渲染缓冲区B,它是当前的后台缓冲区。一旦帧渲染完成,前后缓冲区的指针会相互交换,缓冲区B会变为前台缓冲区,而缓冲区A会变为新的后台缓冲区。之后,我们将在缓冲区A中进行下一帧的渲染。一旦帧渲染完成,前后缓冲区的指针会再次进行交换,缓冲区A会变为前台缓冲区,而缓冲区B会再次变为后台缓冲区。)

    前后缓冲区形成了一个交换链(swap chain)。在Direct3D中,交换链由IDXGISwapChain接口表示。该接口保存了前后缓冲区纹理,并提供了用于调整缓冲区尺寸的方法(IDXGISwapChain::ResizeBuffers)和呈现方法(IDXGISwapChain::Present)。我们会在4.4节中详细讨论些方法。

    使用(前后)两个缓冲区称为双缓冲(double buffering)。缓冲区的数量可多于两个;比如,当使用三个缓冲区时称为三缓冲(triple buffering)。不过,两个缓冲区已经足够用了。

    注意:虽然后台缓冲区是一个纹理(纹理元素称为texel),但是我们更习惯于将纹理元素称为像素(pixel),因为后台缓冲区存储的是颜色信息。有时,即使纹理中存储的不是颜色信息,人们还是会将纹理元素称为像素(例如,“法线贴图像素”)。

    5. 深度缓冲区
    深度缓冲区(depth buffer)是一个不包含图像数据的纹理对象。在一定程度上,深度信息可以被认为是一种特殊的像素。常见的深度值范围在0.0到1.0之间,其中0.0表示离观察者最近的物体,1.0表示离观察者最远的物体。深度缓冲区中的每个元素与后台缓冲区中的每个像素一一对应(即,后台缓冲区的第ij个元素对应于深度缓冲区的第ij个元素)。所以,当后台缓冲区的分辨率为1280×1024时,在深度缓冲区中有1280×1024个深度元素。
    这里写图片描述
    为了判定物体的哪些像素位于其他物体之前,Direct3D使用了一种称为深度缓存(depth buffering)或z缓存(z-buffering)的技术。我们所要强调的是在使用深度缓存时,我们不必关心所绘物体的先后顺序。

    注意:要处理深度的问题,有人可能会建议按照从远至近的顺序绘制场景中的物体。使用这种方法,离得近的物体会覆盖在离得远的物体之上,这样就会产生正确的绘制结果,这也是画家作画时用到的方法。但是,这种方法会导致另一个问题——如何将大量的物体和相交的几何体按从远到近的方式进行排序?此外,图形硬件本身就提供了深度缓存供我们使用,因此我们不会采用画家算法。

    为了说明深度缓存的工作方式,让我们来看一个例子。如图所示,它展示的是观察者看到的立体空间(左图)以及该立体空间的2D侧视图(右图)。从这个图中我们可以发现,3个不同的像素会被渲染到视图窗口的同一个像素点P上。(当然,我们知道只有最近的像素会被渲染到P上,因为它挡住了后面的其他像素,可是计算机不知道这些事情。)首先,在渲染之前,我们必须把后台缓冲区清空为一个默认颜色(比如黑色或白色),把深度缓冲区清空为默认值——通常设为1.0(像素所具有的最远深度值)。

    这里写图片描述
    (图窗口相当于从3D场景生成的2D图像(后台缓冲区)。我们看到,有3个不同的像素可以被投影到像素P上。直觉告诉我们,P1是P的最终颜色,因为它离观察者最近,而且遮挡了其他两个像素。深度缓冲区算法提供了一种可以在计算机上实现的判定过程。注意,我们所说的深度值是相对于观察坐标系而言的。实际上,当深度值存入深度缓冲区时,它会被规范到[0.0,1.0]区间内。)

    现在,假设物体的渲染顺序依次为:圆柱体、球体和圆锥体。下面的表格汇总了在绘制些物体时像素P及相关深度值的变化过程;其他像素的处理过程与之类似。

    当我们发现某个像素具有更小的深度值时,就更新该像素以及它在深度缓冲区中的相应深度值。通过一方式,在最终得到的渲染结果中只会包含那些离观察者最近的像素。(如果读者对此仍有疑虑,那么可以试着交换本例的绘图顺序,看看得到的计算结果是否相同。)

    综上所述,深度缓冲区用于为每个像素计算深度值和实现深度测试。深度测试通过比较像素深度来决定是否将该像素写入后台缓冲区的特定像素位置。只有离观察者最近的像素才会胜出,成为写入后台缓冲区的最终像素。这很容易理解,因为离观察者最近的像素会遮挡它后面的其他像素。

    深度缓冲区是一个纹理,所以在创建它时必须指定一种数据格式。用于深度缓存的格式如下:

    DXGI_FORMAT_D32_FLOAT_S8X24_UINT:32位浮点深度缓冲区。为模板缓冲区预留8位(无符号整数),每个模板值的取值范围为[0,255]。其余24位闲置。
    DXGI_FORMAT_D32_FLOAT:32位浮点深度缓冲区。
    DXGI_FORMAT_D24_UNORM_S8_UINT:无符号24位深度缓冲区,每个深度值的取值范围为[0,1]。为模板缓冲区预留8位(无符号整数),每个模板值的取值范围为[0,255]。
    DXGI_FORMAT_D16_UNORM:无符号16位深度缓冲区,每个深度值的取值范围为[0,1]。

    注意:模板缓冲区对应用程序来说不是必须的,但是如果用到了模板缓冲区,那么模板缓冲区必定是与深度缓冲区存储在一起的。例如,32位格式DXGI_FORMAT_D24_UNORM_S8_UINT使用24位用于深度缓冲区,8位用于模板缓冲区。 所以,将深度缓冲区称为“深度/模板缓冲区”更为合适。模板缓冲区是一个比较高级的主题,我们会在第10章讲解模板缓冲区的用法。

    6. 纹理资源视图
    纹理可以被绑定到渲染管线(rendering pipeline)的不同阶段(stage);例如,比较常见的情况是将纹理作为渲染目标(即,Direct3D渲染到纹理)或着色器资源(即,在着色器中对纹理进行采样)。当创建用于这两种目的的纹理资源时,应使用绑定标志值:

    D3D11_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE

    指定纹理所要绑定的两个管线阶段。其实,资源不能被直接绑定到一个管线阶段;我们只能把与资源关联的资源视图绑定到不同的管线阶段。无论以哪种方式使用纹理,Direct3D始终要求我们在初始化时为纹理创建相关的资源视图(resource view)。这样有助于提高运行效率,正如SDK文档指出的那样:“运行时环境与驱动程序可以在视图创建执行相应的验证和映射,减少绑定时的类型检查”。所以,当把纹理作为一个渲染目标和着色器资源时,我们要为它创建两种视图:渲染目标视图(ID3D11RenderTargetView)和着色器资源视图(ID3D11ShaderResourceView)。资源视图主要有两个功能:(1)告诉Direct3D如何使用资源(即,指定资源所要绑定的管线阶段);(2)如果在创建资源时指定的是弱类型(typeless)格式,那么在为它创建资源视图时就必须指定明确的资源类型。对于弱类型格式,纹理元素可能会在一个管线阶段中视为浮点数,而在另一个管线阶段中视为整数。为了给资源创建一个特定视图,我们必须在创建资源时使用特定的绑定标志值。例如,如果在创建资源没有使用D3D11_BIND_DEPTH_STENCIL绑定标志值(该标志值表示纹理将作为一个深度/模板缓冲区绑定到管线上),那我们就无法为该资源创建ID3D11DepthStencilView视图。只要你试一下就会发现Direct3D会给出如下调试错误:

    ERROR: ID3D11Device::CreateDepthStencilView:
    A DepthStencilView cannot be created of a Resource that did not specify D3D10_BIND_DEPTH_STENCIL.

    注意:2009年8月的SDK文档指出:“当创建资源时,为资源指定强类型(fully-typed)格式,把资源的用途限制在格式规定的范围内,有利于提高运行时环境对资源的访问速度……”。所以,你只应该在真正需要弱类型资源时(使用弱类型的优点是可以使用不同的视图将数据用于不同的用途),才创建弱类型资源;否则,应尽量创建强类型资源。

    7. 多重采样
    超级采样抗锯齿(Super-Sampling Anti-aliasing,简称SSAA)此是早期抗锯齿方法,比较消耗资源,但简单直接,先把图像映射到缓存并把它放大,再用超级采样把放大后的图像像素进行采样,一般选取2个或4个邻近像素,把这些采样混合起来后,生成的最终像素,令每个像素拥有邻近像素的特征,像素与像素之间的过渡色彩,就变得近似,令图形的边缘色彩过渡趋于平滑。再把最终像素还原回原来大小的图像,并保存到帧缓存也就是显存中,替代原图像存储起来,最后输出到显示器,显示出一帧画面。这样就等于把一幅模糊的大图,通过细腻化后再缩小成清晰的小图。如果每帧都进行抗锯齿处理,游戏或视频中的所有画面都带有抗锯齿效果。
    多重采样抗锯齿(MultiSampling Anti-Aliasing,简称MSAA)是一种特殊的超级采样抗锯齿(SSAA)。MSAA首先来自于OpenGL。具体是MSAA只对Z缓存(Z-Buffer)和模板缓存(Stencil Buffer)中的数据进行超级采样抗锯齿的处理。可以简单理解为只对多边形的边缘进行抗锯齿处理。这样的话,相比SSAA对画面中所有数据进行处理,MSAA对资源的消耗需求大大减弱,不过在画质上可能稍有不如SSAA。

    这里写图片描述
    (如左图所示,一个像素与多边形的边缘相交,像素中心的绿颜色存储在可见的三个子像素中,而第4个子像素没有被多边形覆盖,因此不会被更新为绿色,它仍保持为原来绘制的几何体颜色或Clear操作后的颜色。如右图所示,要获得最后的像素颜色,我们需要对4个子像素(3个绿色和一个白色)取平均值,获得淡绿色,通过这个操作,可以减弱多边形边缘的阶梯效果,实现更平滑的图像。)

    注意:在上图中,我们用标准的网格图形表示一个像素的4个子像素,但由于硬件的不同,实际的子像素放置图形也是不同的,Direct3D并不定义子像素的放置方式,在特定情况下,某些放置方式会优于其他的放置方式。

    8. Direct3D中的多重采样
    我们要填充一个DXGI_SAMPLE_DESC结构体。该结构体包含两个成员,其定义如下:

    typedef struct DXGI_SAMPLE_DESC
    {
        UINT Count;
        UINT Quality;
    } DXGI_SAMPLE_DESC, *LPDXGI_SAMPLE_DESC;

    Count成员用于指定每个像素的采样数量,Quality成员用于指定希望得到的质量级别(不同硬件的质量级别表示的含义不一定相同)。质量级别越高,占用的系统资源就越多,所以我们必须在质量和速度之间权衡利弊。质量级别的取值范围由纹理格式和单个像素的采样数量决定。我们可以使用如下方法,通过指定纹理格式和采样数量来查询相应的质量级别:

    HRESULT ID3D11Device::CheckMultisampleQualityLevels(
        DXGI_FORMAT Format, UINT SampleCount, UINT *pNumQualityLevels);

    如果纹理格式和采样数量的组合不被设备支持,则该方法返回0。反之,通过pNumQualityLevels参数返回符合给定的质量等级数值。有效的质量级别范围为0到pNumQualityLevels−1。

    采样的最大数量可以由以下语句定义:

    #define D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT(32)

    采样数量通常使用4或8,可以兼顾性能和内存消耗。如果你不使用多重采样,可以将采样数量设为1,将质量级别设为0。所有符合Direct3D 11功能特性的设备都支持用于所有渲染目标格式的4X多重采样。

    注意:我们需要为交换链缓冲区和深度缓冲区各填充一个DXGI_SAMPLE_DESC结构体。当创建后台缓冲区和深度缓冲区时,必须使用相同的多重采样设置。

    8. 特征级别
    Direct3D 11提出了特征等级(feature levels,在代码中由枚举类型D3D_FEATURE_LEVEL表示)的概念,对应了定义了d3d11中定义了如下几个等级以代表不同的d3d版本:

    typedef enum D3D_FEATURE_LEVEL {
        D3D_FEATURE_LEVEL_9_1 = 0x9100,
        D3D_FEATURE_LEVEL_9_2 = 0x9200,
        D3D_FEATURE_LEVEL_9_3 = 0x9300,
        D3D_FEATURE_LEVEL_10_0 = 0xa000,
        D3D_FEATURE_LEVEL_10_1 = 0xa100,
        D3D_FEATURE_LEVEL_11_0 = 0xb000
    } D3D_FEATURE_LEVEL;

    特征等级定义了一系列支持不同d3d功能的相应的等级(每个特征等级支持的功能可参见SDK文档),用意即如果一个用户的硬件不支持某一特征等级,程序可以选择较低的等级。例如,为了支持更多的用户,应用程序可能需要支持Direct3D 11,10.1,9.3硬件。程序会从最新的硬件一直检查到最旧的,即首先检查是否支持Direct3D 11,第二检查Direct3D 10.1,然后是Direct3D 10,最后是Direct3D 9。要设置测试的顺序,可以使用下面的特征等级数组(数组内元素的顺序即特征等级测试的顺序):

    D3D_FEATURE_LEVEL featureLevels [4] =
    {
        D3D_FEATURE_LEVEL_11_0, // First check D3D 11 support
        D3D_FEATURE_LEVEL_10_1, // Second check D3D 10.1 support
        D3D_FEATURE_LEVEL_10_0, // Next,check D3D 10 support
        D3D_FEATURE_LEVEL_9_3 // Finally,check D3D 9.3 support
    } ;

    这个数组可以放置在Direct3D初始化方法(4.2.1节)中,方法会输出数组中第一个可被支持的特征等级。例如,如果Direct3D报告数组中第一个可被支持的特征等级是D3D_FEATURE_LEVEL_10_0,程序就会禁用Direct3D 11和Direct3D 10.1的特征,而使用Direct3D 10的绘制路径。

    展开全文
  • 之前已经详述过投影变换,这里不再赘述。 之前我们一直是在窗口中绘制,使用了D3DFVF_XYZRHW格式的顶点...打开\Samples\C++\Direct3D\Tutorials\Tut03_Matrices路径下的工程 这个工程和上一个画三角形的工程相比其他
  • Direct3D 11入门级知识介绍

    千次阅读 2012-07-26 07:22:57
    本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: ...上一节里我们介绍了在
  • 启用Direct3D功能

    千次阅读 2019-01-07 23:09:17
    安装了DirectX 9.0C和显卡驱动后,dxdiag查看发现Direct3D等功能没有启用,原来win2003默认是禁用,需要在显示属性中把硬件加速全启用。设置方式如下:【开始菜单】-【控制面板】-【显示】窗体的【设计】页面的...
  • Direct3D 9 入门例子程序 圆锥体

    千次阅读 2014-07-13 00:29:32
    程序目的 认识Directx3D
  • Direct3D 11 特性(一)

    2019-04-23 16:37:56
    编程指南包含如何使用Direct3D 11可编程管道科学地为游戏和桌面应用程序创建实时3D图形的信息。 计算着色器 动态渲染链接 多线程 曲面细分 功能的完整列表 计算着色器 计算着色器允许在GPU上面并行处理,计算...
  • Direct3D

    千次阅读 2018-05-29 19:49:13
    初始化: 创建设备(Device)和上下文(Context) 通过该接口与硬件进行交互。 Device接口用于检测显示适配器功能和分配资源。 Context接口用于设置管线状态、将资源绑定到图形管线和生成渲染命令。...
  • Direct3D基础——Direct3D概述

    千次阅读 2018-11-14 22:32:00
    Direct3D是一套底层图形API,借助该API我们可以利用硬件加速功能来实现3D场景的绘制,Direct3D可以视为应用程序和底层设备的交互。下图展示了Direct3D和硬件之间的交互关系: 图中Direct3D部分是一套已经定义好的...
  • Direct3D(D3D)简介

    千次阅读 2018-09-02 16:06:09
    1.Direct3D(简称:D3D)与DirectX的关系 DirectX,由微软创建的多媒体编程接口,是由很多API组成,按照性质分类,分为:显示部分、声音部分、输入部分和网络部分,其中显示部分担任图像处理关键,其中D3...
  • 禁用和开启DirectDraw加速,Direct3D 加速,AGP纹理加速批处理 在使用本程序前,请先确认你已经安装最新的显卡驱动程序 使用说明: 解压缩,XP系统用户直接运行BAT文件,WIN7系统用户,请右键以管理员身份运行,否则...
  • 注:以下内容参考自 书籍:《DirectX 12 3D》游戏开发实战, 微软官方的 DirectX样例程序;... ...Direct3D 12对于开发者来说,就是一个SDK, 这篇文章就来讲一讲这个SDK的初始化流程,以及我在...
  • Direct3D 9 到 Direct3D 11 的重要更改

    千次阅读 2015-06-08 18:52:01
    从根本上说,Direct3D 11 与 Direct3D 9 是同类型的 API - 一种到图形硬件的低级别虚拟化接口。它还允许你在各种硬件实现上执行图形绘制操作。自 Direct3D 9 起,图形 API 的布局已更改,设备上下文的概念已经扩展,...
  • Direct3D 10 Overview

    千次阅读 2006-07-31 11:20:00
    <!-- @page { size: 21cm 29.7cm; margin: 2cm } TH P { margin-bottom: 0cm; font-style: italic } TD P { margin-bottom: 0cm } P { margin-bottom: 0.21cm } --> The Direct3
  • 本书是基于DirectX 9.0编写的,是介绍Direct3D技术的入门教程。它详细介绍了Direct3D的背景、基本知识以及3D程序设计的相关概念与技术。全书由浅入深,分为四个部分,第一部分介绍Direct3D的发展历史和基本知识,对...
  • Direct3D 11 教程1:Direct3D 11基础

    千次阅读 2014-04-23 15:18:36
    在第一个教程中,我们学习了创建一个最小Direct3D 11应用程序所需的元素,每个Direct3D 11应用程序必须包含这些元素才能正常工作,这些元素包括创建一个窗口和设备对象,然后才能在窗口中显示颜色。 源代码 ...
  • 本系列文章由zhmxy555(毛星云)编写,转载请注明出处。http://blog.csdn.net/zhmxy555/article/details/7707628作者:毛星云 邮箱: happylifemxy@163.com 期待着与...但由于知识衔接的需要,我们的第一个dem
  • Direct3D 实例

    千次阅读 2012-12-26 13:18:51
    场景提交概述 场景提交即将在后台缓冲区绘制好的场景提交到前台缓冲区,从而在屏幕上显示出来。提交接口函数是一组控制特定的渲染设备状态的方法,这些设备影响显示器的显示。 (1)前台缓冲区:这是一块由显卡...
  • Direct3D Rendering Cookbook

    2014-12-15 16:59:58
    Direct3D Rendering Cookbook
  • API(Application Programming Interface)即“应用程序接口”是连接应用程序与操作系统、实现对计算机硬件控制的纽带,Direct3D和OpenGL是目前的两大3D图形 API,要在你的3D显卡上进行3D特效的制作、实现都必须通过...
  • .NET Framework 中新托管 Direct3D 图形 API 的简介 发布日期: 12/6/2004 | 更新日期: 12/6/2004Yahya H. Mirza 和 Henry da Costa本文假设您熟悉 C++ 和 DirectX摘要DirectX 9.0 是最新发展的面向 Windows 的 ...
  • Direct3D 11 API 改编自Intro_to_Direct3D10

    千次阅读 2012-07-25 07:26:21
    函数名前缀反映出处于管道的哪个阶段。  IA = Input Assembler VS = Vertex Shader GS = Geometry Shader SO = Stream Out RS = Rasterizer Stage ...OM = O
  • DirectX11 Direct3D初始化

    千次阅读 2015-09-27 22:03:30
    Direct3D初始化 1. Direct3D初始化步骤 下面将讲解如何初始化Direct3D。我们将Direct3D的初始化过程分为如下几个步骤:1.使用D3D11CreateDevice方法创建ID3D11Device和ID3D11DeviceContext。 2.使用ID3D11...
  • Direct3D Architecture (Direct3D 9) This topic provides two high-level views of the architecture of Direct3D: Direct3D Graphics Pipeline - A view of the internal processing architecture of
  • 在这第一篇教程中,我们将通过介绍创建最小Direct3D应用程序所必需的元素。每一个Direct3D应用程序必需拥有这些元素才能正常地工作。这些元素包括设置窗口和设备对象,以及在窗口上显示颜色。 资源目录 (SDK ...
  • Direct3D基础概念和模型整理

    千次阅读 2014-11-14 00:32:02
    概念主要包括IDirect3D, Adapter, Device, swap chain,surface后台缓存、前台缓存、深度和模板缓存,资源,资源类型_D3DRESOURCETYPE,格式_D3DFORMAT,资源存放的内存区域Pool,资源的使用标识Usage。 0.图形模型 ...
  • Vertex Buffer in Direct3D 10[转]

    千次阅读 2006-01-11 21:03:00
    This short article gives a brief overview of how a simple, yet typical, vertex buffer creation process differs between Direct3D 9 and Direct3D 10. The aim is to show some simple examples of how the AP
  • Direct3d 12概念点

    2019-12-19 22:12:31
    组件对象模型COM COM对象的智能指针,可使用ComPtr类。... #include <wrl.h> ...交换链(swap chain) ...即前台缓冲区(front buffer)和后台缓冲区(back buffer)。当后台缓冲区动画帧绘制完...

空空如也

1 2 3 4 5 ... 20
收藏数 33,199
精华内容 13,279
关键字:

direct3d