D3D渲染作为windows平台游戏及视频开发的一把利剑,做游戏是必须要用D3D这个渲染引擎,使用GUP来渲染,保证流畅度,GDI+真的不适合做大屏渲染和高帧率渲染,效率实在很差,毕竟是一款简单易用的画图引擎,也算不错了,在使用D3D中中我遇到了以下的问题,都是因为没有系统性的学习D3D渲染技术,在这里总结下碰到的问题:

1.在电脑睡眠、锁屏下出现的视频停止渲染(device lost问题);

2.视频缩放过程中,小屏清晰,大屏不清晰问题(申请的后台显存缓冲区是小size的,在大分辨率上渲染相当差,即便前台缓存再大也没用)

3.不和比例的视频被拉伸充满(没有设置视频显示视区,举个例子不同比例的视频,做播放器的也见过,留黑边的16:9或者4:3模式,或者充满模式,这个必须要设置视区)

4.还有一个问题是两个不同分辨率的视频显示原始模式,在同一个窗口上,切换过去后,由于没有清除后台缓冲区数据导致画面停留在上一帧)

其它问题暂没遇到,碰到的朋友可以留言。

D3D的渲染模式状态

1). 设置着色模式:

SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式

SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式

2). 设置多边形填充模式:
SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT) //点填充模式,D3D在多边形的每个顶点绘制一个像素
SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME) //线填充模式,D3D在多边形的每个边绘制一条线
SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID)   //面模式,D3D默认模式,对多边形的面进行填充

3). 设置全景图形抗锯齿:
SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, TRUE)   //抗锯齿
SetRenderState(D3DRS_MUTISAMPLEANTIALIAS, FALSE)   //不抗锯齿

4). 设置剔除模式:

SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE) //不剔除任何面

5). 设置光照模式:
SetRenderState(D3DRS_AMBIENT, D3DCOLOR ambientColor); //为整个场景设置环境光

SetRenderState(D3DRS_SPECULARENABLE, TRUE);   //激活镜面反射计算(D3D默认情况下关闭)

6). 启动/关闭深度测试:

SetRenderState( D3DRS_ZENABLE, TRUE );    //启用深度测试

7) 设置纹理过滤器
  //线性纹理
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);

//最近点采样

SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_ POINT);
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
  //各向异性纹理过滤
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC)
SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_ ANISOTROPIC);

8)

SetRenderState( D3DRS_POINTSCALEENABLE, TRUE ); //打开缩放功能

9)
SetRenderState( D3DRS_POINTSCALE_A , FtoDW( 1.00f ));//设置因子,下同
SetRenderState( D3DRS_POINTSCALE_B , FtoDW( 1.00F ));
SetRenderState( D3DRS_POINTSCALE_C , FtoDW( 1.00f ));
10)
SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f ));//设置点大小上限,下类似
SetRenderState( D3DRS_POINTSIZE_MAX, FtoDW( 5.00f ));
SetRenderState( D3DRS_POINTSPRITEENABLE , TRUE ) ;  //打开点精灵效果
SetRenderState( D3DRS_AMBIENT,  0xffffffff );  //设置环境光颜色开启ALPHA混合效果

11)设置混合因子:

源:SetRenderState( D3DRS_SRCBLEND , D3DBLEND_SRCALPHA );
目的:SetRenderState( D3DRS_DESTBLEND , D3DBLEND_INVSRCALPHA);
第二个参数是 D3DBLEND的枚举结构。

D3D渲染遇到的问题相关推荐

  1. 第一回 开篇 D3D渲染流程简介

    第一回 开篇 D3D渲染流程简介 http://developer.178.com/201004/65293187592.html 开发这个3D engine已经两年半了,从06年8月刚开始统计的4万 ...

  2. 游戏修改器制作教程⑨:修改D3D渲染

    教程面向有C\C++基础的人,最好还要懂一些Windows编程知识 代码一律用Visual Studio 2013编译,如果你还在用VC6请趁早丢掉它... 写这个教程只是为了让玩家更好地体验所爱的单 ...

  3. C# wpf 使用d3d渲染yuv视频数据

    WPF视频渲染系列 第一章 使用HwndHost渲染视频 第二章 使用d3d渲染视频(本章) 第三章 使用d3d渲染dxva2数据 第四章 使用WriteableBitmap渲染视频 文章目录 WPF ...

  4. C# wpf 使用d3d渲染dxva2解码数据

    WPF视频渲染系列 第一章 使用HwndHost渲染视频 第二章 使用d3d渲染视频 第三章 使用d3d渲染dxva2数据(本章) 第四章 使用WriteableBitmap渲染视频 文章目录 WPF ...

  5. vlc之d3d渲染流程

    由于工作需要,最近在研究YUV420P格式的视频的渲染,决定采用vlc的渲染机制进行,这里记录d3d的流程 大的流程如下: 打开和关闭定义: static int Open(vlc_object_t ...

  6. C++ Qt D3D渲染视频数据

      在Qt中显示视频画面,可以把每一帧的数据存为QImage然后显示出来,也可以使用OpenGL或DirectX来进行绘制,直接操作显卡显示,之前我在做视频解码播放时,都是用QImage的方式,本篇将 ...

  7. 使用D3D渲染YUV_RGB

    下面我们封装一个类,使用d3d实现yuv,rgb最简单的渲染功能.只需传窗口句柄,数据大小即可完成初始化,然后就可以按照自己的频率往里送数据. //JYD3DRender.h #include < ...

  8. D3D渲染技术之纹理

    纹理映射是一种将图像数据映射到三角形上的技术,从而能增加场景的细节和真实感. 例如,我们可以通过在每一侧绘制板条纹理来构建一个立方体并将其转换为板条箱如下图所示. 在这里给读者教读者如何学习纹理技术: ...

  9. D3D渲染技术之混合案例

    在本篇内容中,我们将介绍用于获得特定效果的一些混合因子组合, 在这些示例中,我们仅查看RGB混合, Alpha混合的处理方式类似. 无颜色写入 假设我们想要保持原始目标像素的原样,而不是覆盖它或将其与 ...

最新文章

  1. 测试ATS对某个特定域名下文件处理效果的方法
  2. SAP PP CS01使用ECR去创建BOM主数据,报错:System status: ECR is not yet approved.
  3. c# 读取mysql时间
  4. 他在 B 站有 178 万粉丝,今天免费带你玩转 Python
  5. 数据库外键约束的几种方法及区别
  6. CentOS下mysql数据库常用命令总结
  7. 【xml】利用OpenCV解析
  8. Array 复制到ArrayList中
  9. Quartz 定时任务(Scheduler)的 3 种实现方式
  10. kubectl apply -f_广州车展捷豹路虎参展阵容 全新F-PACE 路虎卫士90
  11. Go1.17新特性 ,给我们带来了10%的性能提升
  12. 翻转单词顺序列C语言,剑指offer刷题之c、c++实现的翻转单词顺序列
  13. java内存管理之内存模型
  14. C程序设计语言现代方法04:表达式
  15. 从零实现深度学习框架——常见运算的计算图
  16. SCRUM 12.23
  17. 史上最全Java学习视频下载地址分享
  18. 自编自适应中值滤波器
  19. win10卸载git_提高win10 系统 git 速度的方法
  20. Python数据可视化 Pyecharts 制作 Timeline 时间轴组件

热门文章

  1. CSS3 实现 div 上下滑入滑出效果
  2. linux管道pipe 示例
  3. pythonabs怎么用_python abs函数怎么用
  4. 解决python和window7版本不兼容问题
  5. R编程Error处理手册
  6. beam-search及其torch实现
  7. 【极简壁纸】桌面壁纸美图推荐_2019/01/22
  8. Drivedroid的读取写入速度初步测试
  9. 【MATLAB APPdesigner ui设计实现软件动态页面启动 】(启动无标题栏)
  10. K210基础实验—定时器