zoukankan      html  css  js  c++  java
  • DirctX9.03D 预备知识

    表面

     

    表面是Direct3D主要用于存储2D图像数据的一个像素矩阵。

    表面的宽度(width)和高度(height)都用像素来度量。跨度(pitch)则用字节来度量。具体地说, 跨度可能会比宽度更“宽”。

    在代码中, IDirect3DSurface9 来描述表面。该接口提供了几种直接从表面读取和写入数据的方法, 以及一种获取表相关信息的方法。 接口IDirect3DSurface9中最重要的方法如下。

    LockRect 该方法用于获取指向表面存储区的指针。通过指针运算,可对表耐听的每一个像素进行读写操作。

    UnlockRect 如果调用了LockRect方法,而且已执行完访问表面存储区的操作,必须调用该方法以解除对表面存储区的锁定。

    GetDesc 该方法可通过填充结构DSURFACE_DESC来获取该 表面的描述信息

    结构D3DLOCKED_RECTYP定义如下:

    Typedef struct _D3DLOCKED_RECT {

    INT pitch;     //the surface pitch

    void *pBits;   //pointer to the start of the surface memory

    }D3DLOCKED_RECT;

    多重采样

    用像素矩阵表示图像时往往会出现块状效应,多重采样便 是一项用于平滑块状图像的技术。 对表面进行多重条样常用天全屏反走样。

    会显著降低应用程序的运行速度。

    要使用IDirect3D9::CheckDeviceMultiSampleType方法来枪柄你的图形设备是否支持你所希望采用的多重样类型。

    内存池

    表面和其他的Direct3D厅以放入许多 类型的内存池 如显存 AGP存储 系统存储区。

    交换链和页面置换

    Direct3D 维护着一个表面集合。该集合通常帅两到三个表面组成,称为交换链。该 集合用接口IDirect3DSwapChain9来表示。

    交换链和页面转换技术主要用于生成更加平滑的动画。

    完成绘制功能的程序为:

    (1)    在后台缓存中进行绘制。

    (2)    提交后台缓存的内容

    (3)    回到步骤(1)

    深度缓存

     

    深度缓存是一个只含有特定像素的深度信息而不含图像数据的表面。

    Direct3D为了斗室某一物体的哪些位于另一个物体之前,使用了一项称为深度缓存(depth buffering)或z-缓存(z-buffering)的技术

    顶点运算

    有两种 软件顶点运算(software vertex process) 硬件顶点运算(hardware vertex process) 可以的优先硬件顶点运算

    《DirectX 9.0 3D游戏开发编程基础》笔记

  • 相关阅读:
    IE8下网页中的视频会遮挡住顶层DIV的解决办法
    Synchronized 偏向锁、轻量级锁、自旋锁、锁消除
    Lock的使用
    Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
    Java线程池 面试题(精简)
    Java 线程池的认识和使用
    bat等大公司常考java多线程面试题
    Java面试题必备知识之ThreadLocal
    阿里面试题
    Spring中Bean的生命周期
  • 原文地址:https://www.cnblogs.com/fangshenghui/p/1705741.html
Copyright © 2011-2022 走看看