CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

随笔分类 -  D3D/GDI/DXGI

摘要:原文:http://msdn.microsoft.com/en-us/library/windows/hardware/ff570591(v=vs.85).aspx仍然木有眉目。且有一种走错路的赶脚。 阅读全文

posted @ 2012-06-18 14:34 mumuliang 阅读(579) 评论(0) 推荐(0) 编辑

摘要:1.D3D运行时和DX图形核心子系统做了更多的工作,包括管理显存和DMA。2.Surface的创建更容易。以前需要1). DdCanCreateSurface 2). DdCreateSurface 3). D3dCreateSurfaceEx;前俩都是核心模式的方法。现在只需要 CreateResource。3.Surface::create, destroy;以及lock,unlock对。(神马意思?以前不是这样的功能对吗?)4.显存、内存、托管surface一视同仁。早前的会分视管理。5.着色器代码的翻译在用户模式完成。消除了内核模式生成着色器代码的复杂性。略。原文:http://msd 阅读全文

posted @ 2012-06-18 14:09 mumuliang 阅读(948) 评论(0) 推荐(0) 编辑

摘要:图1. 原址图2,原址GDI如何调用内核,俩图有点冲突?再加上图3.原址其中的future graphics components....不清不楚。 阅读全文

posted @ 2012-06-18 12:47 mumuliang 阅读(600) 评论(0) 推荐(0) 编辑

摘要:说,因为GDI GDI+神马的都是以DXGI为基础的,因此呢,可以利用DXGI1.1的Surface接口的GetDC方法在那啥和那啥之间共享DC。IDXGISurface1::GetDC Method另外,其实D3D9 ex也可以和DXGI1.1共享surface。只不过啥,unsynchronized.有俩例子http://archive.msdn.microsoft.com/DXGISyncSharedSurfhttp://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf但这里貌似有个问题,是先拿到surface再拿到dc,也就是说共享的永远是 阅读全文

posted @ 2012-06-18 11:47 mumuliang 阅读(1217) 评论(0) 推荐(0) 编辑

摘要:参考:这里WARP,Windows Advanced Rasterization Platform提供了一种以软件方式代替显卡硬件方式完成渲染。这也就是为嘛D3D10文档中说,API要求必须实现其接口。因为即使你么有,WARP也会模拟出来。软件方式,也就是利用CPU。WARP说穿了就是想借用核心越来越多的CPU在某些时候代替一下GPU。当然这个效率是跟硬件方式没法比。但是据说在i7上跑WARP的效果比某些支持D3D10的Intel集成显卡还略胜一筹。这里对此,官方的说法是单核3.0GHz的核心上的WARP强过低端D3D10的GPU。。创建D3D device的时候有个driver type选项 阅读全文

posted @ 2012-06-18 10:53 mumuliang 阅读(720) 评论(0) 推荐(0) 编辑

摘要:原文:http://msdn.microsoft.com/en-us/library/windows/desktop/bb205132(v=vs.85).aspxWDDM引以为傲的是APP不需要关心Resource开辟的内存位于哪里,也不需要操心我要管理呢管理呢还是管理呢?WDDM只要求APP在创建Resource提供一个标识(Usage flag)用来说明该Resource的使用方式,剩下的事情您就甭管了。这些剩下的事情主要就是从哪儿划块地皮用于建立Resource,是显存呢还是内存。Resource的默认(Usage Flag default)位于显存,由GPU操作。既然是GGGGGGGr 阅读全文

posted @ 2012-06-15 12:36 mumuliang 阅读(818) 评论(3) 推荐(0) 编辑

摘要:Resource即完成绘制需要的和显示内容相关的数据。顶点坐标,法线,颜色,贴图坐标,纹理坐标和纹理数据都属此列。1.Resource分为两类:buffer和textures。可以简单粗暴的认为前者用于存放非像素数据,后者存放像素数据。所有的Resource根据创建时有没有定义其数据类型又分为typed和typeless两种。typed,即,resource的空间内的数据已经规定好是某类型,比如32位整数。typeless,即resource空间固定,但数据类型是不一定的,由运行时决定。2.buffer分为Vertex buffer,index buffer和constant buffer。c 阅读全文

posted @ 2012-06-14 22:17 mumuliang 阅读(474) 评论(0) 推荐(0) 编辑

摘要:5个方法,只关心俩。CreateSurface和QueryResourceResidency。HRESULT CreateSurface( [in] const DXGI_SURFACE_DESC *pDesc, [in] UINT NumSurfaces, [in] DXGI_USAGE Usage, [in] const DXGI_SHARED_RESOURCE *pSharedResource, [out] IDXGISurface **ppSurface )它的功能被描述为创建用来在多个资源之间交换数据的缓冲区。也“不应该”直接调用。第3个参数指明用途。可选后缓冲,内部使用,... 阅读全文

posted @ 2012-06-14 15:24 mumuliang 阅读(1245) 评论(0) 推荐(0) 编辑

摘要:Output对应是输出设备,显示器、投影仪神马的。IDXGIOutput接口提供的功能包括:1. 获得显示设备的显示能力:支持哪些图像数据格式,分辨率神马的; GetDisplayModeList(), GetDesc(), FindClosestMatchingMode()2. 获得和设备的surface数据 GetDisplaySurfaceData(),SetDisplaySurface()3. 获得和释放控制权 TakeOwnerShip(),ReleaseOwnership()4. Gamma校准相关的 GetGammaControl(),SetGammaControl(),GetG 阅读全文

posted @ 2012-06-14 14:34 mumuliang 阅读(2481) 评论(0) 推荐(0) 编辑

摘要:DXGI可以获得显存的精确大小。但因为DXGI是基于WDDM,因此要先判断当前系统的显示驱动模型是不是WDDM。HasWDDMDriver(){LPDIRECT3DCREATE9EXpD3D9Create9Ex=NULL;HMODULEhD3D9=NULL;hD3D9=LoadLibrary(L"d3d9.dll");if(NULL==hD3D9){returnfalse;}///*TrytocreateIDirect3D9Exinterface(alsoknownasaDX9Linterface).Thisinterfacecanonlybecreatedifthedri 阅读全文

posted @ 2012-06-14 09:50 mumuliang 阅读(1404) 评论(0) 推荐(0) 编辑

摘要:DXGI甚至是位于用户模式之下的。基于COM。DXGI有一个基础接口IDXGIObject::IUnknown。IDXGIFactory, IDXGIAdapter, IDXGIDevice和IDXGIOutput都继承与它。Object的方法主要是,访问父对象GetParent,获得和设置私有数据Set/GetPrivateData,以及设置私有数据接口SetPrivateDataInterface。说到父对象,DXGI中各类型对象的从属关系如图:一切都从Factory开始。创建Factory的方法和其他COM接口一样。* Adapter,对应显卡(但也有软件模拟的adapter);* Ou 阅读全文

posted @ 2012-06-13 17:09 mumuliang 阅读(1173) 评论(0) 推荐(0) 编辑

摘要: 阅读全文

posted @ 2012-06-13 14:42 mumuliang 阅读(219) 评论(0) 推荐(0) 编辑

摘要:D10中Device必须要有一个可用的vertex shader和pixel shader。此外,多了一个可选Shader,gemetroy shader,gemetroy指图元,primitive。一组shader构成一个Technique中的一个Pass。Technique以名字区分。shader代码通常保存在称为Effect的.fx文件中除了vs,gs,ps和常量缓冲区之外,每个effect至少还要包含一个technique,每个technique至少要包含一个pass。更多见http://msdn.microsoft.com/en-us/library/ff729720(v=VS.85 阅读全文

posted @ 2012-06-12 17:05 mumuliang 阅读(344) 评论(0) 推荐(0) 编辑

摘要:详见:http://msdn.microsoft.com/en-us/library/windows/desktop/ee417756(v=vs.85).aspxWindows图形编程的API们包括:GDI,GDI+,D3D,DirectDraw,DXGI,DirectGraphic。。以D3D9.0为分水岭。在9.0(含)之前,GDI和D3D是两套完全分开的图形接口,说完全分开,是因为它们在用户模式和核心模式都是两套不同的东西。GDI+也是这一时代出现的东东。它更多像是改良版和傻瓜版的GDI。DirectDraw是这一时代负责显示光栅图形的接口。有点类似后来的DXGI。在D3D9.0之后(即 阅读全文

posted @ 2012-06-12 12:15 mumuliang 阅读(897) 评论(0) 推荐(0) 编辑

摘要:1.http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop.txthttp://www.opengl.org/registry/specs/NV/DX_interop2.txt2.http://msdn.microsoft.com/en-us/library/ee913554.aspx3.http://developer.amd.com/afds/assets/presentations/2114_final.pdf 阅读全文

posted @ 2012-06-08 22:23 mumuliang 阅读(967) 评论(0) 推荐(0) 编辑

摘要:因为这部分bmBits位于显存。MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/dd144904(v=vs.85).aspxGetObject原型为:intGetObject(__inHGDIOBJhgdiobj,__inintcbBuffer,__outLPVOIDlpvObject);返回非零值表示成功。1.返回非零、输出参数为非NULL时,返回值表示向cbBuffer写入的byte数。2.返回非零、输出参数为NULL时,返回值表示函数保存相关信息写入的byte数。(本例中即BITMAP的长度)对使用CreateDI 阅读全文

posted @ 2012-06-05 13:25 mumuliang 阅读(1731) 评论(0) 推荐(0) 编辑

摘要:---------------------------------------------------------------------------1.windows给程序发送消息,即,操作系统调用应用程序的“窗口消息处理程序”2.窗口是在窗口类别的基础上建立的。窗口类别标识处理窗口消息的“窗口消息处理程序”3.对象=数据+方法窗口=窗口数据&窗口类别数据&消息数据&消息处理数据 +“窗口消息处理程序”4.程序执行后,windows就为其建立一个“消息队列”用来保存消息。5.程序中会有一段代码专门用来从“消息队列”中取出消息,并转发给相应的“窗口消息处理程序”6.有些 阅读全文

posted @ 2012-06-05 11:53 mumuliang 阅读(431) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示