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) << ) | \
((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格式的更多相关文章
- 在DirectShow中支持DXVA 2.0(Supporting DXVA 2.0 in DirectShow)
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.并准备记录一下用ffmpeg实现dxva2,将在第三篇写到.这是第二篇.,英文原址:https://msdn.microso ...
- 日期格式代码出现两次的错误 ORA-01810
错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- excel 日期/数字格式不生效需要但双击才会生效的解决办法
原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- System.Guid ToString五中格式
参考:https://msdn.microsoft.com/en-us/library/97af8hh4.aspx 测试代码: using System; using System.Collectio ...
- WebApi返回Json格式字符串
WebApi返回json格式字符串, 在网上能找到好几种方法, 其中有三种普遍的方法, 但是感觉都不怎么好. 先贴一下, 网上给的常用方法吧. 方法一:(改配置法) 找到Global.asax文件,在 ...
- 你所能用到的BMP格式介绍
原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...
- 值得注意的ibatis动态sql语法格式
一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...
随机推荐
- 微信小程序之scroll-view的坑
好久没动小程序了,今天打算复习复习,结果刚写了一个scroll-view就遇到了一个坑,这怎么能忍,对比看文档也没发现那里出了问题,没办法只能去翻翻微信给的demo,发现scroll-view一个必要 ...
- 2018icpc 徐州h题
题目大意: https://codeforces.com/gym/102012/problem/H?csrf_token=c9d0191a64a241166d54a565b1615125 区间[l , ...
- Ubuntu 安装 JDK1.8
以下是Ubuntu 14.04安装JDK1.8.0_25与配置环境变量过程笔记. 1.源码包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/ ...
- Qt 互斥量 QMutex
QMutex类提供了一种保护一个变量和一段代码的方法. mutex.lock() //锁住互斥量(mutex).如果互斥量是解锁的,那么当前线程就立即占用并锁定它.否则,当前线程就会被阻塞,知道掌握这 ...
- HearthBuddy BotManager
MainWindow private void button_0_Click(object sender, RoutedEventArgs e) { Configuration.Instance.Sa ...
- spring + mybatis + mysql/oracle开发
1)创建一个spring-mybatis-mysql这么一个javaweb或java工程 2)导入spring-ioc,spring-aop,spring-transaction,mybatis,c3 ...
- Nginx设置成服务并开机自动启动
在/etc/init.d下创建文件nginx [root@localhost ~]# vim /etc/init.d/nginx 其内容参考nginx官方文档 需要注意的配置: nginx=”/usr ...
- 深度学习之DCGAN
1.知识点 """ DCGAN:相比GAN而言,使用了卷积网络替代全连接 卷积:256*256*3 --- > 28*28*14 -->结果 ,即H,W变小, ...
- jdk与jre与jdk都是干什么的有什么区别和jvm详解:
1.0,jdk与jre和jvm的区别: JDK(Java Development Kit):指的是Java开发工具集.JDK是整个Java的核心,包括了Java基础类库.Java运行环境(JRE)和J ...
- intellij idea如何将web项目打成war包
1.点击[File]->[Project Structure]菜单(或使用Shift+Ctrl+Alt+S快捷键),打开[Project Structure]窗口.如下图: 2.在[Projec ...