IDirect3DDevice9::GetRenderTargetData】的更多相关文章

翻译自DXSDK 将渲染目标数据从设备内存拷贝到系统内存. HRESULT GetRenderTargetData(  [in]  IDirect3DSurface9 *pRenderTarget,  [in]  IDirect3DSurface9 *pDestSurface); pRenderTarget [in] Pointer to an IDirect3DSurface9 object, representing a render target. 指向一个IDirect3DSurface…
一.对D3D中AGP显存.内存.显存三种内存的解释 三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来, 在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是设置显卡可以使用系统内存的最大允许值,通常是设置为…
当今,视频直播技术和实时音视频技术已经是很多行业必备,典型的应用场景有教育直播.远程视频会议.互联网娱乐等.在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头.截屏等.PC端由于其系统资源充足,应用程序丰富,画面源种类多样,更适合作为主播程序运行的平台.在实际应用中,经常有一些场景是需要将不同的画面源合在一起,然后推流出去的.本文粗浅介绍一些网易云信在开发过程中总结的一些获取不同画面源的画面并将其合并的方法. 相关阅读推荐 <如何快速实现移动端短视频功能?> <视频私有云实战:…
HRESULT IDirect3DDevice9::SetTexture(DWORD Stage, IDirect3DBaseTexture9 *pTexture) 其中Stage并不是“阶段”的意思,而是“通道”的意思,即纹理挂接点,取值范围0~7. 参考: https://msdn.microsoft.com/en-us/library/windows/desktop/bb174461(v=vs.85).aspxhttp://dev.gameres.com/Program/Visual/3D…
在绘制每一帧图形前都要先清空视区,即清空渲染目标表面上的视区矩形的内容:颜色缓冲区.深度缓冲区或者模板缓冲区. HRESULT Clear(  [in]  DWORD Count,                //重置的矩形区域数量  [in]  const D3DRECT *pRects,        //重置的矩形区域数组指针  [in]  DWORD Flags,                //重置缓冲区标志  [in]  D3DCOLOR Color,              …
HRESULT GetBackBuffer( [in]          UINT                iSwapChain, [in]          UINT               BackBuffer, [in]          D3DBACKBUFFER_TYPE Type, [out, retval] IDirect3DSurface9  **ppBackBuffer ); Parameters iSwapChain [in] Type: UINT An unsig…
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用示例(二)——为直播流添加特效 - 张晖的专栏 - 博客频道 - CSDN.NET: (2)ffmpeg 滤镜及其效果 - 党玉涛 - 博客频道 - CSDN.NET 第(1)篇博客对于如何用代码来写滤镜讲得比较清楚,第(2)篇则列出了许多滤镜写法的例子. 参考第(1)篇博客,滤镜的代码如下: 设置…
原文地址http://www.cppblog.com/wc250en007/archive/2011/08/06/152653.html 首先从MIPMAP的原理说起,它是把一张贴图按照2的倍数进行缩小.直到1X1.把缩小的图都存储起来.在渲染时,根据一个像素离眼睛为之的距离,来判断从一个合适的图层中取出texel颜色赋值给像素.在D3D和OGL都有相对应的API控制接口 透过它的工作原理我们可以发现,硬件总是根据眼睛到目标的距离,来玄奇最适合当前屏幕像素分辨率的图层.假设一张32768x327…
一.环境 Visual Studio 2012,DirectX SDK (June 2010) 二.准备 1.环境变量(如没有配置请添加) 变量名:DXSDK_DIR 变量值:D:\Software\Program\Microsoft DirectX SDK (June 2010) 这里D:\Software\Program\Microsoft DirectX SDK (June 2010)是我的DirectX安装目录,视情况修改即可 三.步骤 1.打开VS2012,创建一个空的Win32 Pr…
对3D编程期待已久,却一直叶公好龙浅尝辄止.近期在公司实习却无具体的工作安排,琢磨着学习个新的手艺,就又想起了3D Programming.这次从大名鼎鼎的龙书(Introduction to 3D Game Progamming with Directx 9.0)开始学起,坚持... 作为入门的第一篇笔记,本文对D3D初始化过程做了总结.DirectX3D的初始化需要做两部分工作:创建一个窗口.创建IDirect3DDevice9对象,窗口用于展示D3D渲染出来的场景:IDirect3DDev…
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.并准备记录一下用ffmpeg实现dxva2,将在第三篇写到.这是第一篇,英文原址:https://msdn.microsoft.com/en-us/library/aa965267(v=vs.85).aspx Direct3D设备管理器(Direct3D device manager)允许两个或多个对象(object)共用同一个Direct3D 9 设备(device).其中一个对象作为Direct3D 9 设备的拥有者…
好久没写博客了, 一个月一篇还是要尽量保证,今天谈下Hook技术. 在Window平台上开发任何稍微底层一点的东西,基本上都是Hook满天飞, 普通应用程序如此,安全软件更是如此, 这里简单记录一些常用的Hook技术. SetWindowsHookEx 基本上做Windows开发都知道这个API, 它给我们提供了一个拦截系统事件和消息的机会, 并且它可以将我们的DLL注入到其他进程. 但是随着64位时代的到来和Vista之后的UAC机制开启,这个API很多时候不能正常工作了: 首先,32位DLL…
DirectX常用函数语句 常用数学类函数: 计算向量的长度(模): FLOAT D3DXVec3Length(CONST D3DXVECTOR3* pV); 向量的规范化: D3DXVECTOR3 *D3DXVec3Normalize(D3DXVECTOR3* pOut, CONST D3DXVECTOR3* pV); 点积: FLOAT D3DXVec3Dot(CONST D3DXVECTOR3* pV1, CONST D3DXVECTOR3* pV2); 叉积: D3DXVECTOR3 *…
DirectX HLSL相关 顶点着色器可用软件顶点运算方式来模拟,即在创建设备时,将设备行为标记设定为: D3DCREATE_SOFTWARE_VERTEXPROCESSING 在记事本中编写着色器代码,使用函数D3DXCompileShaderFromFile对着色器文件进行编译. 每个着色器都用常量表来存储其变量. 为了使应用程序能够访问着色器的常量表,D3DX库提供了接口ID3DXConstantTable 获取常量的句柄: D3DXHANDLE ID3DXConstantTable :…
MipMap 首先从MIPMAP的原理说起,它是把一张贴图按照2的倍数进行缩小.直到1X1.把缩小的图都存储起来.在渲染时,根据一个像素离眼睛为之的距离,来判断从一个合适的图层中取出texel颜色赋值给像素.在D3D和OGL都有相对应的API控制接 透过它的工作原理我们可以发现,硬件总是根据眼睛到目标的距离,来选取最适合当前屏幕像素分辨率的图层.假设一张32768x32768的mipmap贴图,当前屏幕分辨率为1024*1024.眼睛距离物体比较近时,mipmap最大也只可能从1024*1024…
深度偏移用来解决共面情况下出现闪烁的问题 通过给多边形增加一个z方向深度偏移(depth bias,z_bias),使3D空间的共面多边形看起来好像并不共面,以便它们能够被正确渲染.这种技术是很有用的,例如,我们要渲染投射在墙上的阴影,这时候墙和阴影共面,如果没有深度偏移,先渲染墙,再渲染阴影,由于depth test,阴影可能不能正确显示.我们给墙设置一个深度偏移,使它增大,例如z增加0.01,先渲染墙,再渲染阴影,则墙和阴影可以正确的显示. Depth-bias操作在clipping之后进行…
1:初始化(SDL_Init()) SDL简介 有关SDL的简介在<最简单的视音频播放示例7:SDL2播放RGB/YUV>以及<最简单的视音频播放示例9:SDL2播放PCM>中已经叙述过了,不再重复.这两篇文章中也提到了一张SDL的原理图,如下所示: 从这个图中可以看出,SDL根据系统的不同调用不同的API完成相应的功能.至于它是如何实现的,将会在后文中详细叙述.下面不再罗嗦,直接进入正题. 使用SDL播放一个视频代码流程大体如下 初始化: SDL_Init(): 初始化SDL. …
Direct3D初始化大概分为4个步骤: 1.获取接口IDirect3D9的指针.(Direct3DCreate9函数调用). 该接口用户获取系统中物理硬件设备的信息并创建接口IDirect3DDevice9,此接口是一个C++对象,代表显示3D图形的物理硬件设备. 2.检查设备性能(D3DCAPS9结构体),判断主显卡是否支持某些特性,比如是否支持顶点运算.创建IDirect3DDevice9之前,必须确定主显卡支持的特性. 3.初始化D3DPRESENT_PARAMETER结构的一个实例,通…
声明:本文完全翻译自DX SDK Documentation depth buffer,通常被称为z-buffer或者w-buffer,是设备的一个属性,用来存储深度信息,被D3D使用.当D3D渲染一个场景到target surface的时候,它会使用depth-buffer surface上的数据,来决定被rasterized三角面片的pixel间的遮挡关系. 当depth buffer被开启,rendering surface上的每一个点都会被检测.depth buffer上的值可以是点的z…
http://http.download.nvidia.com/developer/SDK/Individual_Samples/DEMOS/Direct3D9/DeferredShading.zip HDR Deferred Shading This sample shows high dynamic range (HDR) lighting combined with deferred shading. Deferred shading is a technique where the co…
翻译者 周波 zhoubo22@hotmail.com 版权所有 Philipp Gerasimov Randima (Randy) Fernando Simon Green NVIDIA Corporation 仅以此文赠与Rita 19周岁生日快乐 Shader Model 3.0:Using Vertex Textures SM3:使用顶点纹理 随着GPU可编程特性的发展,Vertex Shader与Pixel Shader的差别越来越大.现在,Geforce6系列gpu将Vertex S…
http://www.myexception.cn/other/1397638.html DShader之位移贴图(Displacement Mapping) www.MyException.Cn   发布于:2013-10-08 16:38:32   浏览:37次 0   3DShader之移位贴图(Displacement Mapping) 我们知道法线贴图是只是改了物体的法线属性,用来计算光照,但是并没有改变物体本身的网格.但是移位贴图就不一样了,它会移动物体的顶点.我用移位贴图做了个海洋…
http://www.cppblog.com/lovedday/archive/2008/03/25/45334.html http://www.cppblog.com/lovedday/ D3D中的模板缓存(3) 8.3实例程序:平面阴影 在场景中被灯光照射的地方会产生阴影,这将使场景变的更真实.在这一部分我们将演示怎样实现平面阴影,即在平面上的阴影(如图8.5). 使用这种阴影只是一种权宜之计,虽然它增强了场景的真实效果,但是这并不是现实中的阴影. 为了实现平面阴影,我们首先必须找到物体投射…
内存池表面和其它一些Direct3D资源被放在多种内存池中.内存池的种类由D3DPOOL枚举类型的一个成员来指定.可用到的内存池有下列几种:D3DPOOL_DEFAULT--表示Direct3D将根据资源的类型和用途把它们放在最合适的地方.这有可能是显存.AGP内存或者系统内存中.值得注意的是,这种内存池中的资源必须要在IDirect3DDevice9::Reset被调用之前消毁掉,并且再次使用时必须重新初始化.理解: 系统自动分配内存,栈内存一样,系统自动分配内存位置.D3DPOOL_MANA…
1, Multipass(多通道)    将一个任务划分成几个阶段,由多个pass处理不同阶段,后续pass总是处理前一个pass的结果.例如复杂的光照方程可以分成几个pass来计算.    用不同的纹理通过多个pass来多次渲染一个图元,这样可以实现许多很酷的特效.例如LightMap,它就是用不同的纹理来表示复杂的光.影效果.    2, Multitexture(多纹理)    很显然,pass越多,效率越低.为了降低pass的数量,有些硬件加速卡支持在一个pass中渲染两个或更多的纹理,…
1 IUnknown--> ID3DXBUFFER D3D泛型接口: GetBufferPointer Retrieves a pointer to the data in the buffer. GetBufferSize Retrieves the total size of the data in the buffer. 使用完之后需要进行释放:Release() 2XFILE //从文件中加载xfile文件 HRESULT D3DXLoadMeshFromX( __in LPCTSTR…
D3DXMesh 以及 D3DXPMesh都是从ID3DXBaseMesh类中集成,mesh基本是对三角单元进行操作 ID3DXBaseMesh主要函数: HRESULT DrawSubset( DWORD AttribId); HRESULT GetIndexBuffer( LPDIRECT3DINDEXBUFFER9 * ppIB); HRESULT GetVertexBuffer( LPDIRECT3DVERTEXBUFFER9 * ppVB); HRESULT LockIndexBuff…
7.1融合方程 1概念 融合技术将当前光栅化像素的颜色与以前已光栅化并处于同一个位置的像素颜色进行合成,即将当前要进行光栅化的三角形单元与已写入后台的像素进行融合 2需要遵循的原则: (1)先绘制不需要融合的物体 (2)需要融合的物品按照摄像机的深度值进行排序 3融合方程 color = (RGBsrc * Ksrc) OP (RGBdst * Kdst) Ksrc   OP    Kdst都为可以设置的参数 4开启融合运算 Device->SetRenderState(D3DRS_ALPHAE…
1 纹理坐标 类似BMP图像坐标系,左上为原点 纹理坐标为了规范化,范围限定在[0,1]之间,使用纹理的时候,需要修改顶点结构 struct ColorVetex { float x, y,z; float _nx,_ny,_nz ; float _u,_y ; static const DWORD FVF; } const DWORD ColorVetex::FVF = D3DFVF_XYZ | D3DFVF_NORMAL|D3DFVF_TEX1; 2创建并启用纹理 从文件中加载纹理数据 HR…
4.1颜色表示 RGB颜色:D3DCOLOR  可以用宏D3DCOLOR_ARGB(a,r,g,b)  D3DCOLOR_XRGB(255,r,g,b) 另外一种浮点表示:D3DCOLORVALUE,浮点类型,最小为0 最大为1 4.2顶点颜色 struct ColorVetex { float x, y,z; D3DCOLOR color; static const DWORD FVF; } const DWORD ColorVetex::FVF = D3DFVF_XYZ | D3DFVF_D…