随笔分类 -  D3D

D3D编程
Directx11教程39 纹理映射(9)
摘要:在myTutorialD3D11_32中,我们在PlaneModelClass中增加一个纹理TextureClass* m_Texture;读入一个grass的纹理,程序执行后的效果如下: 完整的代码请参考: 工程文件myTutorialD3D11_32 代码下载: http://files.cnblogs.com/mikewolf2002/d3d1127-28.zip ht... 阅读全文

posted @ 2012-04-13 20:11 迈克老狼2012 阅读(1542) 评论(1) 推荐(2) 编辑

Directx11教程38 纹理映射(8)
摘要:上篇日志中,我们用纹理和光照颜色调制的方式得到最终颜色,本章我们尝试用纹理采样的颜色,直接做为材质的漫反射系数Kd,并用它来做光照计算,最后再做个gamma校正,如果不做的话,效果会偏亮。 lighttex.ps主要改动代码: float4 textureColor = shaderTexture.Sample(SampleType, input.tex); float4... 阅读全文

posted @ 2012-04-13 16:42 迈克老狼2012 阅读(1202) 评论(0) 推荐(0) 编辑

Directx11教程37 纹理映射(7)
摘要:本章是在教程35、36的基础上来实现一个光照纹理结合的程序,就是把场景中旋转的cube加上纹理。 lighttex.vs中顶点的结构现在为: struct VertexInputType { float4 position : POSITION; float3 normal : NORMAL; float2... 阅读全文

posted @ 2012-04-13 16:20 迈克老狼2012 阅读(1472) 评论(5) 推荐(0) 编辑

Directx11教程36 纹理映射(6)
摘要:本章主要是整理代码,做以下两件事情: 1、把世界坐标矩阵的计算,放在GraphicsClass的渲染函数中,之前放在D3DClass中,而且只是返回一个单位矩阵,没任何作用。如果要使其起作用,就要对每个model类都单独设置,很麻烦,比如我要画两个颜色立方体,岂不是要建立两个model类,而只是世界坐标矩阵不同。 放在Render函数中后,我们主要通过一些D3D的矩阵变化函数... 阅读全文

posted @ 2012-04-13 15:34 迈克老狼2012 阅读(1416) 评论(0) 推荐(0) 编辑

Directx11教程(35) 纹理映射(5)
摘要:到现在为止,我们的TextureClass初始化函数非常简单,说白了就是一行代码: result = D3DX11CreateShaderResourceViewFromFile(device, filename, NULL, NULL, &m_texture, NULL); 这行代码装入一个dds文件,而且其它选项都设置为NULL,这时系统会使用装入文件本身的格式... 阅读全文

posted @ 2012-04-09 21:20 迈克老狼2012 阅读(4231) 评论(4) 推荐(2) 编辑

Directx11教程(34) 纹理映射(4)
摘要:本篇教程中,我们尝试在myTutorialD3D_27中改变采样状态描述符的各种设置,看纹理贴图的方式有什么变化。 原始的代码是: // 创建纹理采样描述符 samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; samplerDesc.AddressU = D3D11_TEXTURE_AD... 阅读全文

posted @ 2012-04-08 18:12 迈克老狼2012 阅读(2698) 评论(0) 推荐(1) 编辑

Directx11教程(33) 纹理映射(3)
摘要:现在我们在myTutorialD3D11_5的基础上,来逐步编码实现纹理映射,之所以在myTutorialD3D11_5基础上改写,是因为这个工程只是画了一个三角形,便于我们贴一个纹理上去,然后改变纹理采样状态,观察纹理贴图的变化。 首先,我们不再为每个顶点赋颜色值,用一个纹理坐标代替,这样在ps中我们可以通过采样纹理,得到物体表面的颜色。 对Color.vs和Co... 阅读全文

posted @ 2012-04-08 11:50 迈克老狼2012 阅读(2595) 评论(2) 推荐(0) 编辑

Directx11教程(32) 纹理映射(2)
摘要:在写代码之前,我们先制作一个dds文件。从网上找到了一张照片,处理成为512*512,保存为jpg格式。 启动微软的directx texture tool后,把图片拖到其内: 选择文件Format->Generate Mip Maps,可以在图像的标题栏看到Mip 1 of 10的字样,这是因为我们原始图像大小为512*512,生成MipMaps时,会产生2... 阅读全文

posted @ 2012-04-08 08:39 迈克老狼2012 阅读(2345) 评论(0) 推荐(1) 编辑

Directx11教程(31) 纹理映射(1)
摘要:在前面的例子中,我们要么是直接给顶点赋颜色值,要么是在顶点属性中设置Diffuse和Specular系数,从而根据光照参数计算得到物体表面颜色,但这样得到的颜色真实感要差很多。如果我们直接把一副图像映射到三角形面上,从而得到物体表面颜色值,效果会好很多,比如下面的两幅图,右边的图是把一副图片映射到2个三角形上。 甚至,我们还可以直接使用图像的颜色值做为顶点(... 阅读全文

posted @ 2012-04-07 15:46 迈克老狼2012 阅读(5107) 评论(3) 推荐(2) 编辑

Directx教程(30) 如何保证渲染物体不会变形
摘要:在Directx11教程(6)中, 我们曾经实现过这个功能,但那时是在SystemClass中,处理WM_SIZE时候,重新调用m_Graphics的初始化函数,这样的话,它的成员变量D3D类还有其它几个成员类,都会重新创建,所以我们的场景等于是从头重新渲染。对于静态场景,这没有问题,但是对于动画场景,我们一改变窗口大小,动画就会从头播放,这显然不是我们所希望的。 本章中,我... 阅读全文

posted @ 2012-04-06 21:56 迈克老狼2012 阅读(1903) 评论(0) 推荐(0) 编辑

Directx教程(29) 简单的光照模型(8)
摘要:现在我们新建一个工程myTutorialD3D_23,在这个工程中,对前面一章的代码进行一些整理: 1、我们在顶点属性中增加材质的的漫反射系数和高光系数,前面我们放在一个光照材质结构中,这样我们能够比较灵活的定义不同顶点的材质属性,当然这也增加了顶点缓冲的大小。 struct VertexType { D3DXVECTOR3 position; ... 阅读全文

posted @ 2012-04-06 21:11 迈克老狼2012 阅读(1413) 评论(0) 推荐(0) 编辑

Directx教程(28) 简单的光照模型(7)
摘要:现实生活中的点光源都是随着距离衰减的,比如一个电灯泡在近处会照的很亮,远处光线就很弱。本节中我们在前面光公式的基础上,再给漫反射和高光加上一个衰减因子。 光源随着距离衰减并不是纯线性的,常用的公式是: d 是光源到着色点的距离。 kC, kL, 和 kQ 分别是常量、线性以及二次衰减系数。 现在在light.ps中,计算光照的代... 阅读全文

posted @ 2012-04-04 10:54 迈克老狼2012 阅读(2442) 评论(4) 推荐(2) 编辑

Directx教程(27) 简单的光照模型(6)
摘要:从myTutorialD3D11_15到myTutorialD3D11_19的工程中,我们都只有一个光源,光源的位置在LightClass中我设置为m_position = D3DXVECTOR4(5.0, 5.0, -3.0,1.0),所以我们渲染的cube,在前面,右侧,上面都没有问题,但是,我们通过A键移动摄像机后,会发现右侧的面没有光照效果。这是因为右侧面的法向是-x方向,漫反射... 阅读全文

posted @ 2012-04-03 19:25 迈克老狼2012 阅读(1254) 评论(0) 推荐(0) 编辑

Directx教程(26) 简单的光照模型(5)
摘要:在前面的工程中,我们都是在vs中实现顶点光照计算,然后再把顶点颜色传到ps中。本章中我们尝试fragment光照(或者说叫ps光照),在vs中,我们把顶点在世界坐标系中的法向和位置都直接传输到ps中。 // 世界坐标系中的顶点法向. float3 N = mul(input.normal, (float3x3)worldMatrix); ... 阅读全文

posted @ 2012-04-03 15:21 迈克老狼2012 阅读(1273) 评论(0) 推荐(0) 编辑

Directx教程(25) 简单的光照模型(4)
摘要:在本篇日志中,我们尝试用不带衰减的点光源来计算漫反射颜色。 前面的三个工程,我们都用的是方向光源(directional light),它的特点是没有光源位置或者说光源位置位于无穷远处,且光线在各个方向都是平行的,所以在工程myTutorialD3D11_17中,我们看到的程序界面上,cube每个面上的颜色都是一样的[因为diffuse光占颜色的大部分]。 方向光... 阅读全文

posted @ 2012-04-03 14:45 迈克老狼2012 阅读(1550) 评论(0) 推荐(0) 编辑

Directx教程(24) 简单的光照模型(3)
摘要:在工程myTutorialD3D11_17中,我们重新定义我们的cube顶点法向,每个三角形面的顶点法向都是和这个三角形的面法向是一致的。如下图所示: 在该工程中,我们还修改了CubeModelClass文件,从一个cube.txt文件中读cube顶点位置、法向、纹理坐标。 cube.txt的格式为: Vertex Count: 36 Data: -1.... 阅读全文

posted @ 2012-04-03 14:13 迈克老狼2012 阅读(1256) 评论(0) 推荐(0) 编辑

Directx教程(23) 简单的光照模型(2)
摘要:在工程myTutorialD3D11_16中,我在文件light.vs中定义了一个材质光源属性常量缓冲。 //const buffer最好为4 float的倍数,否则创建const buffer会fail cbuffer LightMaterialBuffer { float4 lightPosition; //光源位置 ... 阅读全文

posted @ 2012-04-03 13:30 迈克老狼2012 阅读(1578) 评论(1) 推荐(0) 编辑

Directx教程(22) 简单的光照模型(1)
摘要:在前面的教程中,我们在顶点属性中直接给顶点赋颜色,这样生成的三维物体缺乏真实感,如下图中两个立方体,左边的是通过光照生成物体表面颜色的,右边的则是直接给顶点赋颜色值。 首先,我们学习一下最简单的phong光照模型: 在phong光照模型中,物体表面的颜色由自发射光(emissive)、环境光(ambient)、漫反射光(diffuse)以及镜面高光(... 阅读全文

posted @ 2012-04-03 13:09 迈克老狼2012 阅读(2597) 评论(1) 推荐(0) 编辑

Directx11教程(21) 修正程序最小化异常bug
摘要:很长时间竟然没有注意到,窗口最小化时候,程序会异常,今天调试水面程序时,随意间最小化了窗口,发现程序异常了。经过调试,原来程序最小化时候,屏幕的高度和宽度为0,此时创建深度缓冲会fail,所以在D3DClass.cpp的初始化函数中加入以下的代码,可以防止最小化时候程序异常。 D3DClass.cpp增加代码: //Initialize函数包含完成D3D设置的所有代码。 ... 阅读全文

posted @ 2012-03-26 21:16 迈克老狼2012 阅读(1568) 评论(1) 推荐(0) 编辑

Directx11教程(29) 简单的光照模型(8)
摘要:现在我们新建一个工程myTutorialD3D_23,在这个工程中,对前面一章的代码进行一些整理: 1、我们在顶点属性中增加材质的的漫反射系数和高光系数,前面我们放在一个光照材质结构中,这样我们能够比较灵活的定义不同顶点的材质属性,当然这也增加了顶点缓冲的大小。 struct VertexType { D3DXVECTOR3 position... 阅读全文

posted @ 2012-03-26 20:56 迈克老狼2012 阅读(2059) 评论(0) 推荐(1) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示