/* 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. 【分类模型评判指标 二】ROC曲线与AUC面积

    转自:https://blog.csdn.net/Orange_Spotty_Cat/article/details/80499031 略有改动,仅供个人学习使用 简介 ROC曲线与AUC面积均是用来 ...

  2. springMVC课程笔记(一)springMVC架构原理分析

    一.springMVC架构原理分析 1.先搞清楚什么是springMVC: 其实springMVC是spring框架中的一个模块,springMVC和spring无需通过中间整合层整合,SpringM ...

  3. Spring学习随笔(2):Eclipse下Spring环境配置+入门项目

    1 准备工作 (按需下载) Eclipse 下载:http://www.eclipse.org/downloads/eclipse-packages/ : Spring 下载:http://repo. ...

  4. Flutter移动电商实战 --(8)dio基础_伪造请求头获取数据

    在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程序员来说,就是形同虚设.这篇文章就以极客时间 为例,讲一下通过伪造 ...

  5. 2.3 Go语言基础之数组

    本文主要介绍Go语言中数组(array)及它的基本使用. 一.Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基 ...

  6. golang中mysql建立连接超时时间timeout 测试

    本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...

  7. [go]包管理

    vendor方式 //包管理发展 go get(无版本概念) -> vendor(godep)(无版本概念) -> go modules go get github.com/tools/g ...

  8. hibernate关联映射之多对多

    package loaderman.c_many2many; import java.util.HashSet; import java.util.Set; /** * 开发人员 * * */ pub ...

  9. Handler注意事项

    一. Handler与Thread的区别. Handler与调用者处于同一线程,如果Handler里面做耗时的动作,调用者线程会阻塞.Android UI操作不是线程安全的,并且这些操作必须在UI线程 ...

  10. 利用Smarty实现文本隔行变色

    行变色 php页面 <?phpinclude "libs/Smarty.class.php";$smarty = new Smarty(); $link = mysql_co ...