direct3d 的优势

在windows上面,d3d首当其冲是效率最好的。

#ifndef __D3D_RENDER_H__
#define __D3D_RENDER_H__#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <windows.h>
#include <d3d9.h>
//#pragma comment(lib,"dxguid.lib")
//#pragma comment(lib,"d3d9.lib")
//#pragma comment(lib,"d3dx9.lib")#define BGR(b,g,r)          ((COLORREF)(((BYTE)(b)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(r))<<16)))typedef IDirect3D9 * (WINAPI *DLL_Direct3DCreate9)(UINT SDKVersion);class d3d_render
{public:d3d_render();virtual ~d3d_render();public:/* 初始render.  */virtual int init_render(void* ctx, int w, int h);/* 渲染一帧. */virtual int render_one_frame(uint8_t* y ,uint8_t* u ,uint8_t* v);///* 调整大小.   *///virtual void re_size(int width, int height);///* 设置宽高比. *///virtual void aspect_ratio(int srcw, int srch, bool enable_aspect);/* 撤销render.      */virtual void destory_render();
private:void fill_d3d_presentparams(D3DPRESENT_PARAMETERS *present_params,int width,int height);bool reconfigure_d3d();private:HMODULE _hD3d9;D3DCAPS9 _disp_caps;
private:LPDIRECT3D9 m_d3d_handle;                 /**< Direct3D Handle *///CRITICAL_SECTION glocker;//static int ref; LPDIRECT3DDEVICE9 m_d3d_device;           /**< The Direct3D Adapter */LPDIRECT3DSURFACE9 m_d3d_surface;         /**< Offscreen Direct3D Surface. */LPDIRECT3DSURFACE9 m_d3d_backbuf;         /**< Video card's back buffer (used to display next frame) */D3DLOCKED_RECT m_locked_rect;             /**< The locked offscreen surface */D3DFORMAT m_desktop_fmt;                  /**< Desktop (screen) colorspace format. */D3DFORMAT m_movie_src_fmt;                /**< Movie colorspace format (depends on the movie's codec) */D3DPRESENT_PARAMETERS m_present_params;HWND m_hwnd;int m_old_width;int m_old_height;int m_image_width;int m_image_height;DLL_Direct3DCreate9 fpDirect3DCreate9;protected:int D3D9Load();//新的窗体的高度和宽度int ResetEverything(int width,int height);int ResetEverythingAndD3d(int width,int height);//int RestoreEverything();};#endif // __D3D_RENDER_H__

问题

遇到休眠的问题:在操作系统休眠的时候,很多小伙伴自己做的播放器就歇菜了,声音还在自己播放,视频却停止了。所以要侦测事件,在每一帧里面都要拿到事件消息。

hr = m_d3d_device->TestCooperativeLevel();

提示:
D3DERR_DEVICELOST
D3DERR_DEVICENOTRESET

得到reset消息以后,要重新申请设备,重新开始申请设备表面。

清晰度的问题

d3d默认的放大缩小并不是比较好的线性伸缩。需要设置才行
提示:
IDirect3DDevice9_SetSamplerState(m_d3d_device, 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(m_d3d_device, 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);

Direct3d 显示视频的一个问题相关推荐

  1. Direct3D显示视频

    Direct3D显示视频 对于视频的显示已经不推荐使用DirectDraw了,但可以使用Direct3D技术.对此,本人做了一些摸索之后,写了如下一个简单的例子,该例子创建Direct3D对象.Dir ...

  2. DSHOW 显示视频

    原文链接 显示视频 DirectShow 提供了如下过滤器来显示视频: l    Video Renderer 过滤器. 该过滤器可用于所有的支持DirectX的平台,它对平台没有其它特殊的要求.可以 ...

  3. SDL2 显示视频并在视频上显示文字

    SDL2可以直接显示视频,也可以在mfc控件上显示,光显示图像比较简单,但是SDL本身不带字库,因此不能直接显示文字,需要调用第三方库完成. SDL2可以直接从官方下载,但显示文字需要用扩展库SDL_ ...

  4. VS+MFC+Opencv显示视频和图像。

    读入图片: void CDrawImgVideoDlg::OnBnClickedShowImg() {     // TODO: 在此添加控件通知处理程序代码     CDC *pDC = GetDl ...

  5. glide缩略图存储 android,Glide 显示视频缩略图及遇到的坑

    Glide 显示视频缩略图及遇到的坑 实现原理 Glide支持视频格式的文件,但是在3.x里会有些欠缺.其底层是通过 MediaMetadataRetriever实现的. MediaMetadataR ...

  6. java制作h5视频聊天_JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路。...

    JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路. 2018-09-17 问题:大华IPC枪型摄像头需要在WEB中显示实时监控视频,官方提供的SDK只有C#的桌面程序访问方式. 解决 ...

  7. php把视频剪辑成15秒一段,如何快速分割视频 一个视频或一个电影截取变成几份的功能 一段段截取 太累了...

    在制作视频的时候,会需要用到很多的视频素材文件,然而很多素材都是需要从一个电影,或者一个电视剧中的片段当素材,而有些视频文件过大,会占用电脑的内存,那么就需要把这个视频片段时间较长的批量分割成多个小的 ...

  8. android显示视频预览

    android 11 kotlin显示视频预览 权限 读sd卡中的mp4文件的权限 <uses-permission android:name="android.permission. ...

  9. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...

最新文章

  1. window powershell 获取前后日期,格式化日期
  2. android 之RadioButton单选控件
  3. 跨链(5)“蚂蚁区块链”之跨链系统框架
  4. Linux gdb调试器
  5. Jacob Java程序把Word文档直接转换成Html文件
  6. 使用Struts2,Hibernate和MySQL创建个人MusicManager Web应用程序的研讨会
  7. win2003(sp2 x86)+iis6+php-5.3.5-Win32 配置
  8. Python实现学生出勤记录
  9. nginx是干嘛用的_上帝视角——面试官常问的nginx的几个问题
  10. java上传图片特征码到服务器,记一个Base64编码后经网络传输产生的问题
  11. python找不到指定的路径_[Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径...
  12. linux centos 安装mysql,linux/centos安装mysql
  13. QQ一键加群android代码,PC和移动端一键添加和打开QQ群代码分析
  14. Linkedin领英如何添加或更改账号的邮箱地址的方法和细节,让我们更高效的运用领英
  15. Unity-世界坐标与屏幕坐标
  16. 娱乐大数据:《小时代》是属于谁的小时代?
  17. 科技论文中字母正斜体及大小写的规范写法
  18. BIGD牛魔王UI图标设计iocn主题设计全套高清视频教程
  19. nginx 通过路径分发 网站/端口/服务
  20. Java高级编程学习

热门文章

  1. APP 控制 ROS 机器人 群组
  2. python常见安装
  3. python基本数据类型第三周_python3第二天(基本数据类型)
  4. JavaScript鼠标经过图片晃动效果
  5. DaDa英语宣布12月31日起全面停止所有外教服务
  6. iPhone 13需求强劲推动 分析师预计iPhone四季度将销售超过8000万部
  7. 知名投资机构董事总经理在培训中晕倒后去世,这个培训究竟是什么?
  8. 滴滴更新招股书:预计定价13.5美元 最多筹集约46亿美元
  9. 一代人的记忆!又一波微信表情默默消失了
  10. 华为Mate 40系列还有新升级:有望首发66W超级快充