E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
directx11
Directx11
教程39 纹理映射(9)
在myTutorialD3D11_32中,我们在PlaneModelClass中增加一个纹理TextureClass* m_Texture;读入一个grass的纹理,程序执行后的效果如下: 完整的代码请参考: 工程文件myTutorialD3D11_32 代码下载: http://files.cnblogs.com/mikewolf2002/d3d
·
2015-10-28 09:40
教程
Directx11
教程36 纹理映射(6)
本章主要是整理代码,做以下两件事情: 1、把世界坐标矩阵的计算,放在GraphicsClass的渲染函数中,之前放在D3DClass中,而且只是返回一个单位矩阵,没任何作用。如果要使其起作用,就要对每个model类都单独设置,很麻烦,比如我要画2个颜色立方体,岂不是要建立两个model类,而只是世界坐标矩阵不同。 放在Rend
·
2015-10-28 09:39
教程
Directx11
教程37 纹理映射(7)
本章是在教程35、36的基础上来实现一个光照纹理结合的程序,就是把场景中旋转的cube加上纹理。 lighttex.vs中顶点的结构现在为: struct VertexInputType { float4 position : POSITION; fl
·
2015-10-28 09:39
教程
Directx11
教程(33) 纹理映射(3)
现在我们在myTutorialD3D11_5的基础上,来逐步coding实现纹理映射,之所以在myTutorialD3D11_5基础上改写,是因为这个工程只是画了一个三角形,便于我们贴一个纹理上去,然后改变纹理采样状态,观察纹理贴图的变化。 首先,我们不再为每个顶点赋颜色值,用一个纹理坐标代替
·
2015-10-28 09:38
教程
Directx11
教程(34) 纹理映射(4)
本篇教程中,我们尝试在myTutorialD3D_27中改变采样状态描述符的各种设置,看纹理贴图的方式有什么变化。 原始的代码是: // 创建纹理采样描述符 samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; samplerDesc.AddressU = D3
·
2015-10-28 09:38
教程
Directx11
教程(31) 纹理映射(1)
在前面的例子中,我们要么是直接给顶点赋颜色值,要么是在顶点属性中设置Diffuse和Specular系数,从而根据光照参数计算得到物体表面颜色,但这样得到的颜色真实感要差很多。如果我们直接把一副图像映射到三角形面上,从而得到物体表面颜色值,效果会好很多,比如下面的两幅图,右边的图是把一副图片映射到2个三角形上。
·
2015-10-28 09:37
教程
Directx11
教程(19) 画一个简单的地形
通常我们在xz平面定义一个二维的网格,然后y的值根据一定的函数计算得到,比如正弦、余弦函数的组合等等,可以得到一个看似不错的地形或者水面的效果。 在本教程中我们修改ModelClass.h和ModelClass.cpp,得到一个近似的地形。 在本章代码中,
·
2015-10-28 09:35
教程
Directx11
教程(29) 简单的光照模型(8)
现在我们新建一个工程myTutorialD3D_23,在这个工程中,对前面一章的代码进行一些整理: 1、我们在顶点属性中增加材质的的漫反射系数和高光系数,前面我们放在一个光照材质结构中,这样我们能够比较灵活的定义不同顶点的材质属性,当然这也增加了顶点缓冲的大小。 struct VertexType {
·
2015-10-28 09:35
教程
Directx11
教程(16) D3D11管线(5)
本章我们学习VS中具体做些什么事情? 首先再看看我们的VS shader代码: Clolor.vs … PixelInputType ColorVertexShader(VertexInputType input) { PixelInputType output; // Ch
·
2015-10-28 09:34
教程
Directx11
教程(18) D3D11管线(7)
光栅化阶段(RS)之后,将进入PS/OM阶段。 参考外文资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-7/ 大致的管线流程应该是这样的: RS光栅化的fragment达到64或者32(一个wav
·
2015-10-28 09:34
教程
Directx11
教程(17) D3D11管线(6)
VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembly)会从该FIFO中取得顶点位置信息,并根据IA传来的primitive信息,把单独的顶点装配成点、线或者三角形。经过PA阶段后,我们不再是处理单个顶点,而是处理整个体元。 参考资料:http://fgies
·
2015-10-28 09:34
教程
Directx11
教程(14) D3D11管线(2)
下面我们来了解一些GPU memory的知识,主要参考资料:http://fgiesen.wordpress.com/0211/07/02/a-trip-through-the-graphics-pipeline-2011-part-2 现在gpu
·
2015-10-28 09:33
教程
Directx11
教程(13) D3D11管线(1)
从本篇教程开始,我们暂停coding,先来了解一下D3D11的pipeline,这些pipeline不涉及具体的硬件,而是着重于理解能够支持D3D11的pipeline实现。 参考资料: http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipel
·
2015-10-28 09:33
教程
Directx11
教程(8) 一个新的camera类
本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类。并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的控制。 该类的主要功能就是根据指定的摄像机位置,up方向以及lookat方向,得到最终的视图矩阵,所谓视图矩阵就是把世界坐标系的顶点位置转化到视点(或者说摄像机)空间的
·
2015-10-28 09:32
Camera
Directx11
教程(6) 画一个简单的三角形(2)
在上篇教程中,我们实现了在D3D11中画一个简单的三角形,但是,当我们改变窗口大小时候,三角形形状却随着窗口高宽比例改变而改变,如下图所示: 这是因为我们改变了窗口大小,但后缓冲大小在程序初始化时候,已经被指定,不随着窗口改变而改变,这样在
·
2015-10-28 09:31
教程
Directx11
教程(7) 画一个颜色立方体
前面教程我们通过D3D11画了一个三角形,本章我们将画一个颜色立方体,它的立体感更强。主要的变动是ModelClass类,在ModelClass中定义一个立方体需要的顶点信息,然后创建顶点缓冲和索引缓冲。 在ModelClass.h中,我们定义一些宏来表示颜色,以便后面给顶点颜色属
·
2015-10-28 09:31
教程
Directx11
教程(5) 画一个简单的三角形(1)
在本篇教程中,我们将通过D3D11画一个简单的三角形。在D3D11中,GPU的渲染主要通过shader来操作(当然还有一些操作是由GPU固定管线完成,比如光栅化操作),最常用的shader操作是顶点shader(vs)和像素shader(ps)。其实shader就是在GPU中执行的代码,这些代码被driver编译成硬件依赖的机器码,最终
·
2015-10-28 09:30
教程
Directx11
教程(4) 一个最基本D3D应用程序(2)
接着上篇教程的代码,本篇加入基本的D3D代码,实现一个完整的D3D11程序框架。 我们增加一个新类D3DClass, 用来处理3D渲染功能。增加该类后,程序的框架如下图: GraphicsClass.h代码改变如下, 主要是增加了一个D3DClass类成员变量,在Render函数中,将会调用D3DClass的相应Render函数,比如Beg
·
2015-10-28 09:30
应用程序
Directx11
教程(3) 一个最基本D3D应用程序(1)
在教程2程序代码的基础上,这次我们将增加2个类: InputClass,键盘处理的代码将放在这个类里面,GraphicsClass类,D3D渲染的代码放在这个类里,这两个类都是SystemClass类的成员变量,SystemClass类中会调用这2个类实例的初始化、渲染以及shutdown函数。 增加这个两个类后,
·
2015-10-28 09:29
应用程序
Directx11
教程(1) 基本的windows应用程序框架(1)
在vs2010中,建立一个新的win32工程,名字是: myTutorialD3D11, 注意:同时勾选Create directory for solution,我们同时建立一个solution,后面教程的所有的工程文件,我们都建立在这个solution中。 勾选 Emtpy project
·
2015-10-28 09:29
windows
DirectX11
学习笔记9 - 动态顶点缓冲区 和 静态顶点缓冲区
首先,什么是缓冲区: 缓冲区是.fx文件的影响(.ps .vs还) 一种数据结构,其定义了。为.fx和cpp数据通信文件。 例: //-------------------------------------------------------------------------------------- // Constant Buffer Variables //------------
·
2015-10-27 16:37
学习笔记
黑苹果懒人版10.10.5驱动HD4600
硬件环境: 电脑型号 华硕AllSeries台式电脑 操作系统 Windows8.1Enterprise64位(
DirectX11
) 处理器
tianshanju
·
2015-10-24 10:58
黑苹果
黑苹果懒人版10.10.5驱动HD4600
硬件环境: 电脑型号 华硕AllSeries台式电脑 操作系统 Windows8.1Enterprise64位(
DirectX11
) 处理器
tianshanju
·
2015-10-24 10:58
黑苹果
Directx11
教程(58) 鼠标控制摄像机
本篇教程我们实现鼠标旋转摄像机的操作。主要就是按下鼠标左键的时候,根据鼠标的移动对摄像机进行pitch, raw的组合旋转。具体修改代码是在D3CClass类中,增加对鼠标事件的处理: case WM_LBUTTONDOWN: if( wparam & MK_LBUTTON ) &n
·
2015-10-21 12:32
教程
【联想启天M4350】Windows 7下安装Yosemite 10.10.1懒人版
转转转我电脑的配置如下:电脑型号 联想启天M4350-N000台式电脑操作系统 Windows7旗舰版32位SP1(
DirectX11
)主板 联想NOK(英特尔H61Express
shandong_chu
·
2015-10-19 15:00
Dx11龙书--BoxDemo执行成功
《Introduction to 3D GameProgrammingwith
DirectX11
》以这本书的提示开始了尝试。。。
tjj00686
·
2015-10-14 01:00
[ogre] ogre遇到一些小问题
在下载OgreSDK_V1.9生成解决方案后运行sampleBrowser.exe报错猜测应该是电脑没装DirectX驱动,解决方法:安装
DirectX11
9这个程序打开这个程序所在目录的plugins.cfg
月下客
·
2015-10-11 22:00
DirectX11
平面镜像的实现
平面镜像的实现在自然界中有许多物体的表面都非常光滑,可以像镜子一样反射周围的物体。本节介绍了如何在3D应用程序中模拟镜像效果。为简单起见,我们降低了任务难度,只在平面上实现镜像效果。例如,一辆光滑的汽车可以反射周围的物体;但是,车身是一个平滑曲面,而非平面。我们不选择这样的物体。我们将在光滑的大理石地板或挂在墙上的镜子中渲染物体的映像——换句话说,我们只实现平面上的镜像效果。要在程序中实现镜像效果
sinat_24229853
·
2015-10-04 19:00
镜像
游戏开发
Direct3D
图形学
directx11
DirectX11
深度/模板状态
深度/模板状态1.深度/模板描述当创建ID3D11DepthStencilState接口时,第一步是要填充一个D3D11_DEPTH_STENCIL_DESC实例:typedefstructD3D11_DEPTH_STENCIL_DESC{ BOOLDepthEnable;//默认True //默认:D3D11_DEPTH_WRITE_MASK_ALL D3D11_DEPTH_WRITE_MAS
sinat_24229853
·
2015-10-04 12:00
模板
深度
游戏开发
Direct3D
directx11
DirectX11
模板测试
模板测试1.模板测试实现过程如前所述,我们可以使用模板缓冲区来阻止像素片段渲染到后台缓冲区的某些区域。判断一个特定像素是否可以写入后台缓冲区的操作称为模板测试(stenciltest),其实现过程为:if(StencilRef&StencilReadMask⊴Value&StencilReadMask) acceptpixel else rejectpixel模板测试是在像素光栅化时(即输出合并阶
sinat_24229853
·
2015-10-04 12:00
测试
模板
游戏开发
Direct3D
directx11
DirectX11
模板
模板1.什么是模板?前面的博文已经介绍过深度的概念,所以这里只解释模板的概念。模板缓冲区(stencilbuffer)是一种用来实现特殊效果的离屏(off-screen)缓冲区。模板缓冲的大小与后台缓冲及深度缓冲的大小相同,也就是说,模板缓冲的第ij个像素对应于后台缓冲和深度缓冲第ij个像素。我们在4.1.5节的“注意”中提到,当指定一个模板缓冲时,它总是与深度缓冲共享相同的内存空间。尤如名字所指
sinat_24229853
·
2015-10-04 12:00
模板
缓存
游戏开发
Direct3D
directx11
DirectX11
雾
雾1.为什么需要雾?当我们在游戏中模拟某些类型的天气状况时,可能会用到雾效(参见下图)。雾除了本身所具有的用途外,还具有一些附加效用。例如,雾可以用来掩盖渲染过程中出现的不自然的人工痕迹,避免蹿出问题的发生。蹿出(popping)是指由于摄像机的移动,使原本在远平面后面的物体突然进入平截头体内,从不可见变为可见;这看上去就像是突然“蹿”到场景里面一样。通过在一定距离内加入雾效,可以掩盖这一问题。注
sinat_24229853
·
2015-10-04 11:00
游戏开发
Direct3D
directx11
雾
雾效
DirectX11
裁剪像素
裁剪像素1.为什么需要裁剪像素?有时,我们希望完全丢弃某个源像素,使它不再接受后续处理。这一工作可以由HLSL的内置函数clip(x)来实现。该函数只能在像素着色器中使用,当xCreateRasterizerState(&noCullDesc,&NoCullRS)); … //因为铁丝网纹理包含透明区域,我们可以透过立方体看到背面的三角形,所以我们希望禁用背面消隐功能 md3dImmediateC
sinat_24229853
·
2015-10-04 11:00
游戏开发
Direct3D
图形学
directx11
裁剪像素
DirectX11
Alpha通道
Alpha通道1.漫反射贴图控制Alpha通道在RGB混合中,源alpha分量可以用来控制透明度。混合方程中的源颜色来自于像素着色器。我们会在最后一章中看到,我们将漫反射材质的alpha值作为像素着色器的alpha输出。也就是说,漫反射贴图的alpha通道可以用来控制透明度。float4PS(VertexOUTpin):SV_Target { … //从漫反射材质和纹理中提取alpha litCo
sinat_24229853
·
2015-10-04 11:00
透明
游戏开发
Direct3D
directx11
alpha通道
DirectX11
混合例子
混合例子1.屏蔽颜色写入假设我们希望原始目标像素保持不变,即不被任何其他数值覆盖,也不与当前的光栅化源像素进行混合。当我们希望屏蔽后台缓冲区、只向深度/模板缓冲区写入数据时,该算法非常有用。要实现这一算法,可将源像素混合系数设为D3D11_BLEND_ZERO,目标混合系数设为D3D11_BLEND_ONE,混合运算符设为D3D11_BLEND_OP_ADD。使用一方案,混合方程可简化为:还有一种
sinat_24229853
·
2015-10-04 11:00
游戏开发
Direct3D
图形学
混合
directx11
DirectX11
创建混合状态
创建混合状态1.如何在
DirectX11
中创建混合状态?我们已经讨论了混合运算符和混合系数,但是还没有说该如何在Direct3D中使用些值。
sinat_24229853
·
2015-10-04 10:00
游戏开发
Direct3D
混合
directx11
混合状态
DirectX11
混合方程
混合方程1.什么是混合?考虑下图。我们从地形和板条箱开始渲染场景,先绘制地形,再绘制板条箱,使地形和板条箱的像素依次存入后台缓冲区。然后使用混合(blending),将水体绘制到后台缓冲区,使水体像素和后台缓冲区中的地形、板条箱像素融为一体。通过一方式,我们可以透过水体看到地形和板条箱。本章我们主要讲解混合技术,它可以将当前的光栅化像素(也称为源像素)与后台缓冲区中的像素(也称为目标像素)混合(融
sinat_24229853
·
2015-10-04 09:00
游戏开发
Direct3D
混合
directx11
混合方程
DirectX11
压缩纹理格式
压缩纹理格式1.为什么需要压缩纹理?一个虚拟场景可能会载入数百幅纹理,而些纹理会占用大量的GPU内存(记住,我们必须让所有的纹理驻留在GPU内存中,只有这样着色器才能快速地访问纹理)。使用这些格式的好处是它们可以压缩存储在GPU内存中,当使用时由GPU实时解压缩。将纹理存储为DDS压缩文件的另一个好处是可以减少磁盘空间的占用量。2.压缩纹理格式有哪些?了缓解GPU内存压力,Direct3D提供了以
sinat_24229853
·
2015-10-04 09:00
压缩
游戏开发
Direct3D
纹理
directx11
DirectX11
地形水波纹理示例Demo
地形水波纹理示例Demo1.地形水波纹理示例Demo介绍在本例中,我们要为地形和水体添加纹理。首先,我们要在地形上平铺一幅草地纹理。由于地形网格很大,如果我们直接拉伸纹理,那么每个三角形只能得到很少的几个纹理元素。换句话说,这里无法为表面提供足够高的纹理分辨率;我们会受到倍增问题的影响。所以,我们要在地面网格上平铺草地纹理,进而获得较高的分辨率。其次,我们要通过一个时间函数对水体纹理进行平移,使水
sinat_24229853
·
2015-10-04 00:00
游戏开发
地形
网格
纹理
directx11
DirectX11
对纹理进行变换
对纹理进行变换1.纹理坐标变换有什么意义?如前所述,纹理坐标表示纹理平面上的2D点。因此,我们可以像使用其他坐标一样,对纹理坐标进行平移、旋转和缩放。下面是一些会对纹理进行变换的例子:1.沿着墙体拉伸一幅砖块纹理。该墙体顶点的纹理坐标在[0,1]区间内。我们将每个纹理坐标乘以4,使区间扩大为[0,4],让纹理在墙体上重复4×4次。2.在一片晴朗的蓝天上(即,在一个天空球上)拉伸一幅白云纹理。通过一
sinat_24229853
·
2015-10-03 23:00
游戏开发
Direct3D
变换
纹理
directx11
DirectX11
板条箱示例Demo
板条箱Demo1.指定贴图坐标GeometryGenerator::CreateBox产生箱子的贴图坐标,使得整个贴图图像都映射到箱子的每一面。为了简便起见,我们只显示前面、后面和顶面。注意这里我们省略了顶点结构的法线和切线向量的坐标。voidGeometryGenerator::CreateBox(floatwidth,floatheight,floatdepth, MeshData&meshD
sinat_24229853
·
2015-10-03 22:00
游戏开发
Direct3D
纹理
图形学
directx11
DirectX11
把纹理作为材质
把纹理作为材质1.如何将纹理整合到我们的材质/光照系统?要将纹理整合到我们的材质/光照系统中,通常可以将环境光和漫反射光项调制到纹理颜色上,但不需要包括高光项(这常常被称为“后期添加调制”,modulatewithlateadd”)。//后期添加调制 litColor=texColor*(ambient+diffuse)+spec;上述操作给每个像素添加了环境光和漫反射光的材质颜色,像素材质比顶点
sinat_24229853
·
2015-10-03 20:00
Direct3D
纹理
光照
directx11
材质
DirectX11
过滤器
DirectX11
过滤器1.倍增(magnification)现象纹理贴图元素应该被视为在一个连续图像上的离散颜色采样;不应该被视为矩形区域。
sinat_24229853
·
2015-10-03 20:00
过滤
Direct3D
directx11
各向异性过滤
线性过滤
DirectX11
创建和启用纹理
创建和启用纹理1.创建纹理步骤纹理数据通常是存储在磁盘上的图像文件。我们需要将它读取出来,并载入到一个ID3D11Texture2D对象中(参见D3DX11CreateTextureFromFile)。不过,纹理资源是不能被直接绑定到渲染管线上的;我们需要为纹理创建一个着色器资源视图(ID3D11ShaderResourceView),然后将视图绑定到管线上。这个过程可分为两步:1.调用D3DX1
sinat_24229853
·
2015-10-03 19:00
游戏开发
Direct3D
纹理
图形学
directx11
DirectX11
纹理坐标
纹理坐标1.纹理坐标是什么?Direct3D的纹理坐标系由表示图像水平方向的u轴和表示图像垂直方向的v轴组成。坐标(u,v)指定了纹理上的一个元素,我们将该元素称为纹理元素(texel,译者注:texel是textureelement的缩写),其中0≤u,v≤1。注意,v轴的正方向是“垂直向下”的(参见图8.2)。另外,将规范化坐标区间设为[0,1],是因为这样可以使Direct3D拥有一个独立于
sinat_24229853
·
2015-10-03 18:00
游戏开发
Direct3D
纹理
图形学
directx11
DirectX11
纹理和资源概述
纹理和资源概述1.为什么需要纹理?我们的演示程序正在变得越来越有趣,但是顶点颜色无法体现真实世界物体所具有的细节。纹理贴图映射(texturemapping)是一种将图像数据映射到三角形表面的技术,它可以显著提高场景的细节和真实感。例如,我们可以创建一个立方体,然后将一个板条箱纹理映射到立方体的每个面上,使它看上去更像是一个板条箱(参见下图)。2.纹理如何表示?回顾我们自从第4章之后学习和使用过的
sinat_24229853
·
2015-10-03 18:00
资源
游戏开发
Direct3D
纹理
directx11
DirectX11
计时和动画
计时和动画要正确实现动画效果,我们就必须记录时间,尤其是要精确测量动画帧之间的时间间隔。当帧速率高时,帧之间的时间间隔就会很短;所以,我们需要一个高精确度计时器。1.性能计时器我们使用性能计时器(或性能计数器)来实现精确的时间测量。为了使用用于查询性能计时器的Win32函数,我们必须在代码中添加包含语句“#include__int64currTime; QueryPerformanceCounte
sinat_24229853
·
2015-09-28 13:00
动画
性能
游戏开发
计时
directx11
DirectX11
Direct3D初始化
Direct3D初始化1.Direct3D初始化步骤下面将讲解如何初始化Direct3D。我们将Direct3D的初始化过程分为如下几个步骤:1.使用D3D11CreateDevice方法创建ID3D11Device和ID3D11DeviceContext。2.使用ID3D11Device::CheckMultisampleQualityLevels方法检测设备支持的4X多重采样质量等级。3.填充
sinat_24229853
·
2015-09-27 22:00
C++
3D
游戏开发
Direct3D
directx11
DirectX11
Direct3D基本概念
Direct3D基本概念1.Direct3D概述Direct3D是一种底层绘图API(applicationprogramminginterface,应用程序接口),它可以让我们可以通过3D硬件加速绘制3D世界。从本质上讲,Direct3D提供的是一组软件接口,我们可以通过这组接口来控制绘图硬件。例如,要命令绘图设备清空渲染目标(例如屏幕),我们可以调用Direct3D的ID3D11DeviceC
sinat_24229853
·
2015-09-27 19:00
C++
api
游戏开发
Direct3D
directx11
DirectX11
XNA数学库之矩阵
XNA数学库之矩阵1.XNA数学库之矩阵介绍跟XNA向量一样为了使用SSE2优化指令,XNA矩阵XMMATRIX的实现使用了四个向量。2.矩阵类型XMMATRIX的定义如下:// Matrixtype:Sixteen32bitfloatingpointcomponentsalignedona // 16byteboundaryandmappedtofourhardwarevectorregiste
sinat_24229853
·
2015-09-27 19:00
数学
矩阵
Matrix
XNA
directx11
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他