
DirectX11
文章平均质量分 80
lengbingteng
这个作者很懒,什么都没留下…
展开
-
D3D11CreateDeviceAndSwapChain创建失败
今天程序突然跑步起来,诡异之极啊,说我的Device创建失败,之前还好好的呢,最后找出原因。UINT createDeviceFlags = 0;#if defined(DEBUG) || defined(_DEBUG) createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;#endif // 创建驱动对象 D3D11Cre...原创 2013-03-02 22:50:17 · 4515 阅读 · 0 评论 -
CPU对GPU的资源更新
一共有四个方法进行对资源进行更新:CPU调用:ID3D11DeviceContext::MapGPU调用:ID3D11DeviceContext::CopySubresourceRegionID3D11DeviceContext::CopyResourceID3D11DeviceContext::UpdateSubresource首先如果想更新GPU中的resour...原创 2013-02-25 01:13:07 · 915 阅读 · 0 评论 -
文字显示
在DX11之前有很多实用的工具方法,很多东西都比较容易实现,但是不好扩展。例如文字系统,其实是一个比较复杂的功能模块,如果要往精的地方做的话。正是因为做不好,微软索性不提供特定支持,或者说它会在后续的版本花更大的力气来做这些事情,DX11想用文字还是自己渲染比较实在。想在屏幕上显示字体,最简单的方式就是把每个字符当做一个纹理单元,渲染的时候在相应的地方贴上纹理就行了。...原创 2013-01-30 22:33:07 · 116 阅读 · 0 评论 -
地形绘制
怎么说呢,什么的地形?其实我觉得地形只是一个狭隘的定义,其实是场景。场景中最基础的部分就是地形,它就像背景颜色一样,很多场景中的模型都是放在地形上的,包括建筑人物之类。所以,我觉得在研究地形的算法的时候,不能仅仅从地形角度去思考,而且要思考这个算法对场景的管理是否有影响。 一个无限大的地形,必定需要无限多的顶点,如果要一次性加载和渲染所有的顶点那肯定是不可能的。所以,地形算法中必须有动...原创 2013-01-27 22:25:38 · 307 阅读 · 0 评论 -
置换贴图,凹凸贴图,法线贴图和位移贴图的区别
这是一篇网上转载了很多便的文章,由于其针对贴图技术的介绍很全面,收藏之。 1.Parallax mapping 视差贴图(因为后面的算法都是基于NormalMap的应用,可能看上去没有NormalMapping那么长了,但内容肯定一样精彩的!)视差贴图是一种NormalMapping算法的增强算法,其本质上和NormalMapping没有区别。优势是只需要增加3个HLSL语句和一个...原创 2013-01-14 13:42:14 · 1595 阅读 · 0 评论 -
DX11创建纹理 : DirectXTex
备注 :用了一下微软的这个开源代码,执行到:ScopedObject<IWICBitmapDecoder> decoder; HRESULT hr = pWIC->CreateDecoderFromFilename( fileName, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &decoder )...原创 2012-12-31 16:19:12 · 2177 阅读 · 0 评论 -
DX11渲染管道 :着色器的编译和创建
在不使用效果框架的时候,整个渲染管道其实挺简单的,创建资源,输入资源。编译着色器输入着色器,其实着色器本身也是一种数据,只不过这个数据描述的是逻辑。最后调用一下draw方法画一下就OK 了。这里说说着色器的编译和创建,很简单。 D3DX11CompileFromFile :HRESULT D3DX11CompileFromFile( _In_ LPCTSTR pSrcFile...原创 2012-12-30 22:29:22 · 454 阅读 · 0 评论 -
DX11渲染管道:数据的修改(Map和Unmap)
在C++与Hlsl绑定Cbuffer数据的时候,非常容易出错,出错的根本原因是C++对数据结构内存的分配与hlsl不同。重要:HLSL的结构体struct其实并不管你是一个变量还是几个变量,它就是按照一次放满一个float4的内存长度,多少变量都往一个float4里面塞,塞满了再接着塞下一个float4。测试结果显示:cbuffer的长度必须是float4的整数倍才行,不知道float+flo...原创 2012-12-30 21:37:56 · 2299 阅读 · 1 评论 -
DX11渲染管道 :IA输入汇编阶段
概述:图形渲染本质即是CPU+GPU编程,这比传统的CPU编程更加复杂,就连其存储数据的位置,CPU和GPU对数据的访问权限都变的更加复杂。IA阶段是整个渲染过程中数据加载阶段,把这个模块学好对渲染整个渲染过程的理解都有很好的帮助。模型文件里面的信息,会加载到内存中,然后映射到ID3D11Buffer里面,有了数据管道才能开始渲染。这里面分两个过程,一是创建buffer的过程,这一步会把数据...原创 2012-12-30 16:13:42 · 835 阅读 · 0 评论 -
原语的枚举值
这里需要注意: LIST和STRIP的不同,list是3个索引一组,strip是前两个顶点和后一个顶点一组,这说明strip绘制的时候前后两个几何体会耦合在一起。从某种意义上来讲STRIP占的带宽更少,但是不灵活。list会导致很多重复的顶点,但是比较灵活,对于目前来说鼓励使用list,但是在使用list的时候必须传递更多点。一个4变形2个3角形,共用的顶点需要传两次。 下图显示了...原创 2012-12-30 12:15:48 · 214 阅读 · 0 评论 -
坡度与法向量
在空间中,每一个顶点都有一个法向量,来描述该顶点所在的面的朝向,这个法向量有时候也可以用坡度来表示。 如图所示,n为法向量,可以由水平的夹角坡向和Z轴的夹角坡度来表示,其中坡向是0-2π的范围,而坡度是0-π/2的范围。一般我们不是这样描述坡度的,我们使用坡度在x轴上的坡度值和y轴上的坡度值来描述,坡度和破角。 坡度与法线的转换:这个转换在凹凸贴图里面用过,当初实现贴图技术的时候...原创 2013-04-22 01:51:37 · 1582 阅读 · 0 评论 -
Vertex(顶点)与Index(索引)
如果要画一个如下图的四边形,是不是应该很简单呢? 给这4个顶点标个序号,这个需要也是顶点信息传入buffer的顺序。左上:0 右上:1 左下:2 右下:3 在DX11中Draw的方式有很多种,但是大致可以分为两类:根据顶点绘制图形和根据索引绘制图形。顶点是可以直接绘制图形的,但是大部分情况下我们还是使用索引绘制,这是因为绘制时有些顶点可能会重复使用。图...原创 2013-04-19 13:34:58 · 2942 阅读 · 0 评论 -
Spherical Harmonic Lighting(球谐光照)
球谐光照 1.简介 球谐光照是实时渲染技术中的一种,属于Precompute Radiance Transfer(PRT)的范畴。经过预处理并存储相应的信息之后,它可以产生高质量的渲染及阴影效果。球谐光照需要使用新的光照方程来代替通常的光照方程,并将该方程中的相关信息使用球谐基函数来投影到频度空间,并用系数进行表示(该变换与信号处理中的Fourier变换同样的道理)以一定的方式存储...原创 2013-03-19 23:57:31 · 267 阅读 · 0 评论 -
动态向纹理写入内容
最近想向纹理写入内容,谁知死活都有问题,先说一下我自己的思路:1.在创建的时候写入内容: int n = 512 * 512; UINT* textureData = new UINT[n]; for(int i = 0;i<n;) { textureData[i] = 0xFF0000FF; } ID3D11Texture2D* text...原创 2013-02-25 16:04:35 · 432 阅读 · 0 评论