/* 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) << ) | \
((DWORD)(BYTE)(ch2) << ) | ((DWORD)(BYTE)(ch3) << ))
#endif /* defined(MAKEFOURCC) */
typedef enum _D3DFORMAT
{
D3DFMT_UNKNOWN = , D3DFMT_R8G8B8 = ,
D3DFMT_A8R8G8B8 = ,
D3DFMT_X8R8G8B8 = ,
D3DFMT_R5G6B5 = ,
D3DFMT_X1R5G5B5 = ,
D3DFMT_A1R5G5B5 = ,
D3DFMT_A4R4G4B4 = ,
D3DFMT_R3G3B2 = ,
D3DFMT_A8 = ,
D3DFMT_A8R3G3B2 = ,
D3DFMT_X4R4G4B4 = ,
D3DFMT_A2B10G10R10 = ,
D3DFMT_A8B8G8R8 = ,
D3DFMT_X8B8G8R8 = ,
D3DFMT_G16R16 = ,
D3DFMT_A2R10G10B10 = ,
D3DFMT_A16B16G16R16 = , D3DFMT_A8P8 = ,
D3DFMT_P8 = , D3DFMT_L8 = ,
D3DFMT_A8L8 = ,
D3DFMT_A4L4 = , D3DFMT_V8U8 = ,
D3DFMT_L6V5U5 = ,
D3DFMT_X8L8V8U8 = ,
D3DFMT_Q8W8V8U8 = ,
D3DFMT_V16U16 = ,
D3DFMT_A2W10V10U10 = , D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', ''),
D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', ''),
D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', ''),
D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', ''),
D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', ''),
D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', ''), D3DFMT_D16_LOCKABLE = ,
D3DFMT_D32 = ,
D3DFMT_D15S1 = ,
D3DFMT_D24S8 = ,
D3DFMT_D24X8 = ,
D3DFMT_D24X4S4 = ,
D3DFMT_D16 = , D3DFMT_D32F_LOCKABLE = ,
D3DFMT_D24FS8 = , /* D3D9Ex only -- */
#if !defined(D3D_DISABLE_9EX) /* Z-Stencil formats valid for CPU access */
D3DFMT_D32_LOCKABLE = ,
D3DFMT_S8_LOCKABLE = , #endif // !D3D_DISABLE_9EX
/* -- D3D9Ex only */ D3DFMT_L16 = , D3DFMT_VERTEXDATA =,
D3DFMT_INDEX16 =,
D3DFMT_INDEX32 =, D3DFMT_Q16W16V16U16 =, D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T',''), // Floating point surface formats // s10e5 formats (16-bits per channel)
D3DFMT_R16F = ,
D3DFMT_G16R16F = ,
D3DFMT_A16B16G16R16F = , // IEEE s23e8 formats (32-bits per channel)
D3DFMT_R32F = ,
D3DFMT_G32R32F = ,
D3DFMT_A32B32G32R32F = , D3DFMT_CxV8U8 = , /* D3D9Ex only -- */
#if !defined(D3D_DISABLE_9EX) // Monochrome 1 bit per pixel format
D3DFMT_A1 = , // 2.8 biased fixed point
D3DFMT_A2B10G10R10_XR_BIAS = , // Binary format indicating that the data has no inherent type
D3DFMT_BINARYBUFFER = , #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了

向雷神致敬.

 

IDirect3DSurface9的D3DFORMAT格式的更多相关文章

  1. 在DirectShow中支持DXVA 2.0(Supporting DXVA 2.0 in DirectShow)

    这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.并准备记录一下用ffmpeg实现dxva2,将在第三篇写到.这是第二篇.,英文原址:https://msdn.microso ...

  2. 日期格式代码出现两次的错误 ORA-01810

    错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...

  3. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  4. excel 日期/数字格式不生效需要但双击才会生效的解决办法

    原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...

  5. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  6. System.Guid ToString五中格式

    参考:https://msdn.microsoft.com/en-us/library/97af8hh4.aspx 测试代码: using System; using System.Collectio ...

  7. WebApi返回Json格式字符串

    WebApi返回json格式字符串, 在网上能找到好几种方法, 其中有三种普遍的方法, 但是感觉都不怎么好. 先贴一下, 网上给的常用方法吧. 方法一:(改配置法) 找到Global.asax文件,在 ...

  8. 你所能用到的BMP格式介绍

    原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...

  9. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

随机推荐

  1. python 快速排序-代码示例

    def quick_sort(alist, first, last): if first >= last: # 如果开始等于结尾,即就一个元素 return mid_value = alist[ ...

  2. Go之GOPATH与工作空间

    来自: GOPATH与工作空间 GOPOATH 设置 go 命令依赖一个重要的环境变量:$GOPATH 在类 Unix 环境下大概这样设置: exprt GOPATH=/home/apple/mygo ...

  3. redis2. sds 字符串(SimpleDynamicString)

    1.标准strcat 会有溢出风险,sdscat无溢出风险 2.空间预分配,惰性空间释放 空间预分配:sds分配空间时,如果原来是5,free是0, sdscat追加一个10长度的,此时字符串加长到1 ...

  4. Python3+RobotFramewok 循环判断以及Evaluate用法(三)

    本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...

  5. RTSP协议-中文定义

    RTSP协议-中文定义 转自:http://blog.csdn.net/arau_sh/article/details/2982914 E-mail:bryanj@163.com 译者: Bryan. ...

  6. [ML] Load and preview large scale data

    Ref: [Feature] Preprocessing tutorial 主要是 “无量纲化” 之前的部分. 加载数据 一.大数据源 http://archive.ics.uci.edu/ml/ht ...

  7. Oracle 本地创建多个实例并创建多个监听(只能在服务端弄,不可在客户端)

    注意:监听必须在客户端创建,在客户端创建,会报错. 1.创建监听 通过 Net Configuration Assistant  创建监听,设置端口: 注意:此监听创建完后,服务列表里面并没有此服务的 ...

  8. php7与其他版本共存

    转自: https://zhangge.net/5088.html php7编译安装 https://zhangge.net/5075.html

  9. DevOps - 构建本地开发环境

    1 - 构建个人本地开发环境 在个人计算机中搭建一个精简版的.与生产环境基本一致的本地开发环境,既不会占用团队公共环境的资源,也可以缩短等待时间,从整体上提高效率. 本地开发环境的适用场景: 从应用程 ...

  10. Vue 使用eventBus 实现兄弟组件间的通信

    实现方式:  主要是在相互通信的兄弟组件之中,都引入一个新的vue实例,然后通过分别调用这个实例的事件触发事件广播 和监听来实现通信和参数传递. 需求: a页面tree的增删改后,数据还是之前的老数据 ...