zoukankan      html  css  js  c++  java
  • IDirect3DSurface9的D3DFORMAT格式

    /* Formats
     * Most of these names have the following convention:
     *      A = Alpha
     *      R = Red
     *      G = Green
     *      B = Blue
     *      X = Unused Bits
     *      P = Palette
     *      L = Luminance
     *      U = dU coordinate for BumpMap
     *      V = dV coordinate for BumpMap
     *      S = Stencil
     *      D = Depth (e.g. Z or W buffer)
     *      C = Computed from other channels (typically on certain read operations)
     *
     *      Further, the order of the pieces are from MSB first; hence
     *      D3DFMT_A8L8 indicates that the high byte of this two byte
     *      format is alpha.
     *
     *      D3DFMT_D16_LOCKABLE indicates:
     *           - An integer 16-bit value.
     *           - An app-lockable surface.
     *
     *      D3DFMT_D32F_LOCKABLE indicates:
     *           - An IEEE 754 floating-point value.
     *           - An app-lockable surface.
     *
     *      All Depth/Stencil formats except D3DFMT_D16_LOCKABLE and D3DFMT_D32F_LOCKABLE indicate:
     *          - no particular bit ordering per pixel, and
     *          - are not app lockable, and
     *          - the driver is allowed to consume more than the indicated
     *            number of bits per Depth channel (but not Stencil channel).
     */
    #ifndef MAKEFOURCC
        #define MAKEFOURCC(ch0, ch1, ch2, ch3)                              
                    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |       
                    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
    #endif /* defined(MAKEFOURCC) */
    typedef enum _D3DFORMAT
    {
        D3DFMT_UNKNOWN              =  0,
    
        D3DFMT_R8G8B8               = 20,
        D3DFMT_A8R8G8B8             = 21,
        D3DFMT_X8R8G8B8             = 22,
        D3DFMT_R5G6B5               = 23,
        D3DFMT_X1R5G5B5             = 24,
        D3DFMT_A1R5G5B5             = 25,
        D3DFMT_A4R4G4B4             = 26,
        D3DFMT_R3G3B2               = 27,
        D3DFMT_A8                   = 28,
        D3DFMT_A8R3G3B2             = 29,
        D3DFMT_X4R4G4B4             = 30,
        D3DFMT_A2B10G10R10          = 31,
        D3DFMT_A8B8G8R8             = 32,
        D3DFMT_X8B8G8R8             = 33,
        D3DFMT_G16R16               = 34,
        D3DFMT_A2R10G10B10          = 35,
        D3DFMT_A16B16G16R16         = 36,
    
        D3DFMT_A8P8                 = 40,
        D3DFMT_P8                   = 41,
    
        D3DFMT_L8                   = 50,
        D3DFMT_A8L8                 = 51,
        D3DFMT_A4L4                 = 52,
    
        D3DFMT_V8U8                 = 60,
        D3DFMT_L6V5U5               = 61,
        D3DFMT_X8L8V8U8             = 62,
        D3DFMT_Q8W8V8U8             = 63,
        D3DFMT_V16U16               = 64,
        D3DFMT_A2W10V10U10          = 67,
    
        D3DFMT_UYVY                 = MAKEFOURCC('U', 'Y', 'V', 'Y'),
        D3DFMT_R8G8_B8G8            = MAKEFOURCC('R', 'G', 'B', 'G'),
        D3DFMT_YUY2                 = MAKEFOURCC('Y', 'U', 'Y', '2'),
        D3DFMT_G8R8_G8B8            = MAKEFOURCC('G', 'R', 'G', 'B'),
        D3DFMT_DXT1                 = MAKEFOURCC('D', 'X', 'T', '1'),
        D3DFMT_DXT2                 = MAKEFOURCC('D', 'X', 'T', '2'),
        D3DFMT_DXT3                 = MAKEFOURCC('D', 'X', 'T', '3'),
        D3DFMT_DXT4                 = MAKEFOURCC('D', 'X', 'T', '4'),
        D3DFMT_DXT5                 = MAKEFOURCC('D', 'X', 'T', '5'),
    
        D3DFMT_D16_LOCKABLE         = 70,
        D3DFMT_D32                  = 71,
        D3DFMT_D15S1                = 73,
        D3DFMT_D24S8                = 75,
        D3DFMT_D24X8                = 77,
        D3DFMT_D24X4S4              = 79,
        D3DFMT_D16                  = 80,
    
        D3DFMT_D32F_LOCKABLE        = 82,
        D3DFMT_D24FS8               = 83,
    
    /* D3D9Ex only -- */
    #if !defined(D3D_DISABLE_9EX)
    
        /* Z-Stencil formats valid for CPU access */
        D3DFMT_D32_LOCKABLE         = 84,
        D3DFMT_S8_LOCKABLE          = 85,
    
    #endif // !D3D_DISABLE_9EX
    /* -- D3D9Ex only */
    
    
        D3DFMT_L16                  = 81,
    
        D3DFMT_VERTEXDATA           =100,
        D3DFMT_INDEX16              =101,
        D3DFMT_INDEX32              =102,
    
        D3DFMT_Q16W16V16U16         =110,
    
        D3DFMT_MULTI2_ARGB8         = MAKEFOURCC('M','E','T','1'),
    
        // Floating point surface formats
    
        // s10e5 formats (16-bits per channel)
        D3DFMT_R16F                 = 111,
        D3DFMT_G16R16F              = 112,
        D3DFMT_A16B16G16R16F        = 113,
    
        // IEEE s23e8 formats (32-bits per channel)
        D3DFMT_R32F                 = 114,
        D3DFMT_G32R32F              = 115,
        D3DFMT_A32B32G32R32F        = 116,
    
        D3DFMT_CxV8U8               = 117,
    
    /* D3D9Ex only -- */
    #if !defined(D3D_DISABLE_9EX)
    
        // Monochrome 1 bit per pixel format
        D3DFMT_A1                   = 118,
    
        // 2.8 biased fixed point
        D3DFMT_A2B10G10R10_XR_BIAS  = 119,
    
    
        // Binary format indicating that the data has no inherent type
        D3DFMT_BINARYBUFFER         = 199,
        
    #endif // !D3D_DISABLE_9EX
    /* -- D3D9Ex only */
    
    
        D3DFMT_FORCE_DWORD          =0x7fffffff
    } D3DFORMAT;

    看到其中没有yuv420p,所以我们需要自己添加枚举,但是怎么定义yuv420p网上找不到具体的方法,

    https://www.fourcc.org/yuv.php 这个位置有规范了yuv的fourcc code  

    须知 yuv420p 又分为yu12 和yv12  

    yu12 在安卓下双称I420

     yv12

     所以我们在上面说的网址中查表添加两个枚举

        D3DFMT_YUV420P_YU12                = 0x30323449,
        D3DFMT_YUV420P_YV12                = 0x32315659,

    然后就可以愉快的使用surface渲染yuv420p了

    向雷神致敬.

     
  • 相关阅读:
    Java 开发环境配置
    JDBC数据批处理
    knockout.js简单实用教程1
    angular 入门教程1
    knockout简单实用教程3
    knockout简单实用教程2
    autofac使用笔记
    MVC WEB api 自动生成文档
    Unity IOC注入详细配置(MVC,WebApi)
    为什么php往mongo里插入整型数字8,变成了numberint(8)
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/11712439.html
Copyright © 2011-2022 走看看