swap chain- IDirect3DSwapChain9】的更多相关文章

为了避免动画中的闪烁,最好将整个动画帧绘制到称为后台缓冲区的屏幕外纹理(off-screen texture)中.一旦整个场景被绘制到给定动画帧的后缓冲区,它就作为一个完整的帧呈现给屏幕;以这种方式,观看者不会在绘制帧时观看到 - 观看者只能看到完整的帧.为实现这一点,硬件维护两个纹理缓冲区(texture buffers),一个称为前缓冲区(front buffer),另一个称为后缓冲区(back buffer).前缓冲区存储当前正在监视器上显示的图像数据,而下一帧动画正被绘制到后缓冲区.在将…
交换链,对应的接口是IDirect3DSwapChain9,是整个Directx 3D中最核心的接口.D3d程序至少包含一个swap chain,在调用CreateDevice时自动创建, 其中的D3DPRESENT_PARAMETERS * pPresentationParameters参数设置将要创建的IDirect3DSwapChain9的属性.首先我们看看这个接口提供的函数,我们 可以找到Present函数,其实不难猜到IDirect3DDevice9::Present函数内部就是调用了…
转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surface file format, .dds.这是微软从DirectX7开始引进的一种文件格式,它用来存储压缩的或未压缩的纹理,该格式支持mimaps cube maps和volume maps, D3DX和许多其他的DX工具都支持这种格式,比如DirectX Texture Editor(dxtex.e…
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.microsoft.com/en-us/library/windows/desktop/ee417025(v=vs.85).aspx . 我本意是记录下学习笔记,但可能写成了翻译,但这也没有办法的事,MSDN的写作风格就是简单凝练,缺少参考索引,所以看MSDN往往也就是读完正文,点点加有超链接的名词,顶多再跑…
为了支持更具弹性和的输出设定和副本机制,DXGI1.5添加了下面这些功能: 高动态范围(HDR)和宽色域(WCG) 可变刷新率显示 复制输出 奉献和再生资源 高动态范围(HDR)和宽色域(WCG) HDR根据光的密度,从黑到白,显示的很不一样:款色与则提供了更大的色域. 简述 在DXGI 1.5里支持了HDR和WCG,都使用了至少10bits,而不是8bits:HDR10,一个10bit HDR/WCG格式. 现在显示器的最大亮度是为了支持漫反射平面,不比纸更亮,叫做纸白(paper white…
想要的效果 如上是silverlight版本.原理是设定一个调色板,为256的渐变色(存在一个png文件中,宽度为256,高度为1),然后针对要处理的距离矩阵图形,取图片中每个像素的Alpha值作为索引,对应到调色板的颜色.每个像素处理之后,则形成上面的热度图.该图主要表达了一个数据分布的密度. 网络上有一个Gildor.HeatmapDemos工程,我主要参考了SL版本.要注意elipseRadius,如果过小,即每个圆彼此不相交,则看不到热度效果,所以代码设置初始值为100.(上图的数值初始…
转载请注明出处:http://www.cnblogs.com/Ray1024   一.概述 在正式开始学习D3D11之前,我们必需首先学习必要的基础知识. 在这篇文章中,我们将介绍一下Direct3D中常用的一些基本类型和基本绘图概念.   二.基本绘图概念和基本类型介绍 2.1 Direct3D概述 Direct3D是一种底层绘图API,它可以让我们可以通过3D硬件加速绘制3D世界.从本质上讲,Direct3D提供的是一组软件接口,我们可以通过这组接口来控制绘图硬件.例如,要命令绘图设备清空渲…
一.对D3D中AGP显存.内存.显存三种内存的解释 三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来, 在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是设置显卡可以使用系统内存的最大允许值,通常是设置为…
Introduction In DirectX 8, support for rendering to multiple windows is provided through the creation of additional swap chains. However, there are currently no examples of this in the SDK, and the documentation is a bit vague. This article is provid…
上一篇文章记录了GDI播放视频的技术.打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术.Direct3D应该Windows下最常用的播放视频的技术.实际上视频播放只是Direct3D的“副业”,它主要用于3D游戏制作.当前主流的游戏几乎都是使用Direct3D制作的,例如<地下城与勇士>,<穿越火线>,<英雄联盟>,<魔兽世界>,<QQ飞车>等等.使用Direct3D可以用两种方式渲染视频:Surface和Texture.使用…
由于创建设备时要用到这个值,所以在这里总结一下,以免以后再找. 首先引自msdn: Copy 只能为构成单个后台缓冲区的交换链指定此交换效果. 无论交换链是有窗口的还是全屏的,运行库都保证 Device 的基于复制的 Present 操作所暗示的语义:具体来说,该操作使后台缓冲区的内容保持不变,而不是像基于翻转的 Present操作那样用前台缓冲区的内容来取代后台缓冲区的内容. 对于有窗口交换链,Present 操作使后台缓冲区内容被直接复制到目标窗口的工作区.由于没有尝试使复制与显示适配器的垂…
D3D的两个主要的接口: Device,ID3D11Device.创建资源,Shader对象,状态对象,查询对象,等.以及检查硬件功能,调试函数.可以认为是资源的提供者. Device Context,ID3D11DeviceContext.使用资源.绑定资源,Shader对象,状态对象等到流水线.以及控制计算流水器的执行. Immedite context.立即模式,用于主渲染线程,也是服务GPU的主要接口 Deffered context.延迟模式,提供线程安全机制,用于异步线程模型. 创建…
原文地址:http://blog.csdn.net/cmt100/article/details/6343274 总结 这是一个初步的教程.我们将通过必要的步骤来创建一个Win32 Application.我们创建一个空白的窗口为DirectX 11做准备. 创建窗口 每一个窗口应用程序需要至少一个窗口对象.甚至在开始获得DirectX 11的诸多细节之前,我们的Application必须要有一个工作着的窗口.我们有三个事情要做: 1.注册一个窗口类 WNDCLASSEX wcex;      …
该方案将在进一步的程序 面向对象. 独立的模型类.更像是一个框架. 其中以超过遇到了一个非常有趣的问题,.获得一晚.我读了好几遍,以找到其他的列子.必须放在某些功能Render里面实时更新,而不是仅仅进入初始化InitModel里边 染多个物体的时候,缓冲区的内容是要随设备变化的. 话不多说直接上代码 主程序main #include "D3DBase.h" #include "Axis.h" #include "Cube.h" class D3…
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 在这一章节,我们了解一下将渲染图像提交到屏幕的基本机制.这种机制成为交换链,并且需要在Vulkan上下文中被明确创建.从屏幕的角度观察,交换链本质上是一个图像队列.应用程序作为生产者会获取图像进行绘制,然后将其返还给交换链图像队列,等待屏幕消费.交换链的具体配置信息决定了应用程序提交绘制图像到队列的条件以及图像队列表现的效果,但交换链的通常使用目的是使绘制图像的最终呈现与屏幕的刷新…
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Setup 这一章节会把之前的所有内容进行整合.我们将会编写drawFrame函数,通过主循环main loop将三角形绘制到屏幕.在mainLoop函数调用: void mainLoop() { while (!glfwWindowShouldClose(window)) { glfwPollEvents(); drawFrame(); } glfwDestroyWindow(w…
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 现在我们已经成功的在屏幕上绘制出三角形,但是在某些情况下,它会出现异常情况.窗体surface会发生改变,使得交换链不在于其兼容.可能导致这种情况发生的原因之一是窗体的大小变化.我们必须在这个时机重新创建交换链. Recreating the swap chain 添加新的函数recreateSwapChain并调用createSwapChain及依赖于交…
目录 DirectX11 Study Note Create a DirectX graphics interface factory.创建一个DirectX图形界面工厂 CreateDXGIFactory function CreateDXGIFactory函数 Use the factory to create an adapter 使用工厂创建适配器 IDXGIFactory interface IDXGIFactory接口 Enumerate the primary adapter ou…
什么是多视图 一般的3D程序都只有一个视图,对应整个窗口的客户区.多视图就是在一个窗口中放置多个视图,以便从不同的角度观察模型或者场景.很多图形软件都有这个功能,比如大家熟知的3DMax就有四个视图,分别是前视图,左视图,顶视图和透视图.还有一些游戏引擎也有类似的Demo,比如irrlicht引擎中的SplitScreen就是用多视图实现的,如下图. 什么是视口(viewport)? 用DirectX实现多视图有几种方法,可以使用多个Viewport,也可以使用多个Swap Chain,后者实现…
Github-LearnDirectX-DX3D11 tutorial01 概述 在这第一篇教程中,我们将通过介绍创建最小Direct3D应用程序所必需的元素.每一个Direct3D应用程序必需拥有这些元素才能正常地工作.这些元素包括设置窗口和设备对象,以及在窗口上显示颜色. 资源目录 (SDK root)\Samples\C++\Direct3D11\Tutorials\Tutorial01 设置Direct3D 11 设备 第一步是创建一个窗口和消息循环,这些在Direct3D 9, Dir…
原文摘自Vulkan入门流程 Vulkan是Khronos Group(OpenGL标准的维护组织)开发的一个新API,它提供了对现代显卡的一个更好的抽象,与OpenGL和Direct3D等现有api相比,Vulkan可以更详细的向显卡描述你的应用程序打算做什么,从而可以获得更好的性能和更小的驱动开销.Vulkan的设计理念与Direct3D 12和Metal基本类似,但Vulkan作为OpenGL的替代者,它设计之初就是为了跨平台实现的,可以同时在Windows.Linux和Android开发…
功能是什么创建一个设备(device)来代表显示适配器(display adapter)并且创建一个交换链(swap chain)用于渲染 设备device在dx11里是用来干什么的从ID3DX11Device上看,他主要是用来创建各种dx11对象,例如:buffer,shadow等 swap chain是做什么的他用来实现一个或多个surfaces用来保存在present之前的渲染的数据 ID3D11RenderTargetView是什么他继承自ID3D11View他标识了可在渲染中访问的渲染…
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频播放演示样例2:GDI播放YUV, RGB 最简单的视音频播放演示样例3:Direct3D播放YUV.RGB(通过Surface) 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture) 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV 最简单的视音频播放演示样例…
HRESULT GetBackBuffer( [in]          UINT                iSwapChain, [in]          UINT               BackBuffer, [in]          D3DBACKBUFFER_TYPE Type, [out, retval] IDirect3DSurface9  **ppBackBuffer ); Parameters iSwapChain [in] Type: UINT An unsig…
提要 前几天非常easy地跑了一个DirectX 9 程序,以为DirectX就那么绘制,事实证明有点Naive了. 之前的那个程序最多也就是个固定流水线的东西. 可是今天要用DirectX11来写一个小的框架. 龙书就不要看了,看Introduction to 3D GAME PROGRAMMING WITH DIRECTX®11 几个重要的类 ID3D11Device : 一个虚拟适配器.它被用于执行渲染和创建资源. ID3D11DeviceContext:  represents a de…
为了加快学习速度,和使程序更加easy理解.  我把sampler tutorial里面的一个样例 的固定代码和常常修改的代码经过简单的类的封装了一下. 以后学习的时候就能够仅仅在还有一个文件写render渲染代码和fx着色器代码了 D3DBase.h  基本框架代码 #include <windows.h> #include <d3d11.h> #include <d3dx11.h> #include <d3dcompiler.h> #include &l…
大家好,本文学习Chrome->webgl-samplers->helloTriangle示例. 准备Sample代码 克隆webgl-samplers Github Repo到本地. (备注:当前的version为0.0.2) 实际的sample代码在src/examples/文件夹中,是typescript代码写的: 学习helloTriangle.ts 打开helloTriangle.ts文件,我们来看下init函数的内容. 首先是shader代码 const vertexShaderG…
[译]Vulkan教程(30)深度缓存 Depth buffering 深度缓存 Introduction 入门 The geometry we've worked with so far is projected into 3D, but it's still completely flat. In this chapter we're going to add a Z coordinate to the position to prepare for 3D meshes. We'll use…
[译]Vulkan教程(28)Image视图和采样器 Image view and sampler - Image视图和采样器 In this chapter we're going to create two more resources that are needed for the graphics pipeline to sample an image. The first resource is one that we've already seen before while work…
[译]Vulkan教程(27)Image Images Introduction 入门 The geometry has been colored using per-vertex colors so far, which is a rather limited approach. In this part of the tutorial we're going to implement texture mapping to make the geometry look more interes…