• hge source explor 0xA graphics Ⅰ


    Graphics

      在这一部分完成初始化DX,并且完成固定流水线,然后在进行渲染。

      在这一部分会用到的数据结构和参数有:

      参数:

    D3DPRESENT_PARAMETERS*  d3dpp;
    
        D3DPRESENT_PARAMETERS   d3dppW;
        D3DPRESENT_PARAMETERS   d3dppFS;
    
        IDirect3D8*                pD3D;
        IDirect3DDevice8*        pD3DDevice;
        IDirect3DVertexBuffer8*    pVB;
        IDirect3DIndexBuffer8*    pIB;
    
        IDirect3DSurface8*    pScreenSurf;
        IDirect3DSurface8*    pScreenDepth;
        CRenderTargetList*    pTargets;
        CRenderTargetList*    pCurTarget;
    
        D3DXMATRIX            matView;
        D3DXMATRIX            matProj;
    
        CTextureList*        textures;
        hgeVertex*            VertArray;
    
        int                    nPrim;
        int                    CurPrimType;
        int                    CurBlendMode;
        HTEXTURE            CurTexture;
    para

      其中还有这些结构:

      hgevertex

    /*
    ** HGE Vertex structure
    */
    struct hgeVertex
    {
        float            x, y;        // screen position    
        float            z;            // Z-buffer depth 0..1
        DWORD            col;        // color
        float            tx, ty;        // texture coordinates
    };
    
    //对应的定点设置
    #define D3DFVF_HGEVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    #define VERTEX_BUFFER_SIZE 4000

       

    CRenderTargetList

    struct CRenderTargetList
    {
        int                    width;
        int                    height;
        IDirect3DTexture8*    pTex;
        IDirect3DSurface8*    pDepth;
        CRenderTargetList*    next;
    };

    CTextureList

    struct CTextureList
    {
        HTEXTURE            tex;
        int                    width;
        int                    height;
        CTextureList*        next;
    };

     渲染的图元

    /*
    ** HGE Primitive type constants
    */
    #define HGEPRIM_LINES        2
    #define HGEPRIM_TRIPLES        3
    #define HGEPRIM_QUADS        4
    
    
    /*
    ** HGE Vertex structure
    */
    struct hgeVertex
    {
        float            x, y;        // screen position    
        float            z;            // Z-buffer depth 0..1
        DWORD            col;        // color
        float            tx, ty;        // texture coordinates
    };
    
    
    /*
    ** HGE Triple structure
    */
    struct hgeTriple
    {
        hgeVertex        v[3];
        HTEXTURE        tex;
        int                blend;
    };
    
    
    /*
    ** HGE Quad structure
    */
    struct hgeQuad
    {
        hgeVertex        v[4];
        HTEXTURE        tex;
        int                blend;
    };

    BLEND类型

    /*
    ** HGE Blending constants
    */
    #define    BLEND_COLORADD        1
    #define    BLEND_COLORMUL        0
    #define    BLEND_ALPHABLEND    2
    #define    BLEND_ALPHAADD        0
    #define    BLEND_ZWRITE        4
    #define    BLEND_NOZWRITE        0
    
    #define BLEND_DEFAULT        (BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE)
    #define BLEND_DEFAULT_Z        (BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_ZWRITE)
  • 相关阅读:
    vfork与fork的区别
    常见的六种设计模式以及应用场景
    Java中常见的集合类比较
    排序——总结
    排序——交换排序
    排序——选择排序
    排序——归并排序
    排序——基数排序
    排序——插入排序
    设计模式
  • 原文地址:https://www.cnblogs.com/yoru/p/5515662.html
Copyright © 2020-2023  润新知