/* 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. apidoc 接口文档系统

    代码未动,文档先行.apidoc可以方便地维护接口文档.模拟响应数据.前后端分离.导出PDF文档. 特性说明 可视化编辑:支持表单界面编辑接口,不必手动编辑swagger.json 接口模拟响应:支持 ...

  2. arcgis python RefreshActiveView CLEAR_SELECTION

    import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames( ...

  3. VIM | vim操作大全

    1. 关于Vim vim是Linux下第二强大的编辑器. 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效. 如果是初学vi,运行一下vimtutor是个聪明的决定. ...

  4. ssy-publish

    github地址: https://github.com/shangyueyue/ssy-publish 一.安装 npm install ssy-publish -D 二.在process.cwd( ...

  5. 数据中心网络架构的问题与演进 — NFV

    目录 文章目录 目录 前文列表 前言 NFV NFV 的最终目标 NFV 的抽象框架 基础架构层与虚拟基础设施管理层 资源管理与业务流程编排层 OSS 层 SDN 控制层 NFV 的生态合作 NFV ...

  6. How To Install OpenSSL on Windows

    转自 https://tecadmin.net/install-openssl-on-windows/ OpenSSL is a full-featured toolkit for the Trans ...

  7. centos7安装redis3.2.5集群

    安装参照     https://blog.csdn.net/mingliangniwo/article/details/54600640  https://blog.csdn.net/u013820 ...

  8. 【AMAD】django-cities -- 为Django项目提供国家,城市数据

    动机 简介 个人评分 动机 有时候看一些数据库设计,国家数据会存在一个单独的表里面.这种方式读取数据库无疑又要加上一层join,很不划算. 简介 [django-cities]1可用为你提供国家和城市 ...

  9. Exchange2010---反垃圾邮件配置

    Exchange2010---反垃圾邮件配置  Exchange2010---反垃圾邮件配置   本文以Exchange Server 2010作为反垃圾邮件配置实例为例.  其实,在微软发布的Exc ...

  10. day26 封装、多态、内置函数、反射、动态导入

    今日内容 1.封装 什么是封装? 封装从字面意思上看就只将某种东西封起来装好,当我们代码中的某些方法与属性不想让外界进行访问时,就对这些属性进行特殊的处理,使这种属性或者方法不能被外界直接进行访问或者 ...