使游戏全屏显示很容易,但是需要更改程序的一些细节,并添加几行代码。在本节中,我们将介绍两件事:首先,我们将介绍如何全球化你的屏幕分辨率以及为什么要这样做;其次,我们将介绍如何使窗口进行全屏模式并再次返回的机制。 设置屏幕尺寸   在你的DirectX游戏编程中,你会遇到许多需要了解屏幕尺寸的函数和结构体。当你决定更改分辨率,尤其是当你决定在运行时更改分辨...

下载地址   Immediate Mode Graphical User interface,Immediate模式,不保存UI对象,用静态方法创建,Unity里的GUI就是这种模式,适合小游戏或快速开发,如果要做动画或者保存状态,可能需要自己额外封装一层,好处就是好写,虽然我还是喜欢UGUI的那种。 入坑方法:   进入github官网下载源码,将这些文件...

  在本节中,我们将介绍PeekMessage()函数,以及该函数与GetMessage()函数的区别。实际上,GetMessage()函数并没有什么区别,只是它的工作方式在游戏和持续活动中并没有取得惊人的成绩。我们将讨论这是什么原因以及PeekMessage()又是如何解决这个问题的。 GetMessage()的循环结构   在上一节中,我们使用GetMe...

  当使用图形时,知道绘制区域的确切尺寸十分重要。在上一节中,我们创建了一个窗口,并将其尺寸设置为(500,400,但是该窗口在D3D中绘制的尺寸并不是(500,400)。在本节中,我们将介绍绘图区域的实际尺寸,并学习一个更加精确设置窗口尺寸的函数AdjustWindowRect()。 窗口尺寸 vs 客户端尺寸   当我们调用CreateWindowEx(...

用DirectX 11绘制一个Cube

directx

  

2020-05-08 21:37:39

用DirectX 11绘制一个Cube 定义Cube顶点数据结构 创建Vertex Buffer和Index Buffer 编写应用于Cube的effect file 读取effect,编译创建 创建input layout 绘制 之前一篇文章讲了如何初始化DirectX 11,现在在此基础上绘制一个Cube,总体可概括为以下几个步骤: 定义Cube顶点数据结构 创建Vertex Buffer和I...

DirectX11学习笔记七 雾化

DirectX

  

2020-05-16 11:20:25

雾化这一节本应该放在局部光照那里的后面。 不过鉴于博客更新断了两个月,我觉得有必要跟着书动动手复习一下,雾化在原博客中没有提到,不过代码也非常简单,赶紧水一篇笔记。 代码承接Blending的工程 雾化 我们可以将雾化计算简化成两个半圆,分为内径和外径,内径为雾开始距离,外径为雾结束距离,两者之差为雾范围,只有在fogRange内才会计算雾的效果。 因此再定义一个float4:雾的颜色,只需要再添...

HLSL常量缓冲区打包规则 1. C++中的结构体数据是以字节流的形式传输给HLSL的 例1.1 2. HLSL常量缓冲区中的向量不允许拆分 例2.1 例2.2 3. HLSL常量缓冲区中多个相邻的变量若有空缺则优先打包进同一个4D向量中 例3.1 例3.2 4. 对于在常量缓冲区的结构体,也会进行打包操作 例4.1 例4.2 5. 对于在常量缓冲区的数组,需要特殊对待 例5.1 例5.2 例5....

文章目录 前言 常见包围盒 包围球(Bounding Box) 轴对齐包围盒(Axis-aligned bounding box) 有向包围盒(Oriented bounding box) 包围视锥体(Bounding Frustum) 包围盒的相交、包含、碰撞检测及变换 包围盒与平面的相交检测 包围盒与包围盒的包含检测 包围盒与包围盒的碰撞检测 包围盒的变换 包围盒的其它方法 获取包围盒的八个顶...

文章目录 前言 实现雾效 HLSL代码 树的公告板效果 HLSL代码 图元ID 顶点ID 纹理数组 纹理数组的采样 纹理数组的加载 CreateDDSTextureFromFileEx函数--使用更多的参数,从文件中读取DDS纹理 纹理子资源(Texture Subresources) D3D11CalcSubresource函数--计算子资源的索引值 ID3D11DeviceContext::M...

文章目录 前言 .obj格式 .obj文件结构简述 .mtl文件结构简述 简单示例 使用自定义二进制数据格式提升读取效率 ObjReader--读取.obj/.mbo格式模型 Model类 GameObject类 GameObject::Draw方法 模型加载演示 Obj文件完整说明 前言 一个模型通常是由三个部分组成:网格、纹理、材质。在一开始的时候,我们是通过Geometry类来生成简单几何体...

文章目录 前言 交换律 深度测试 关闭深度测试 开启深度测试但关闭深度写入 利用深度测试和模板测试来绘制闪电特效与其镜面 RenderStates类的变化 加法混合 关闭深度测试 允许深度测试,但不写入深度值的状态 BasicObjectFX类的变化 BasicObjectFX::SetDrawBoltAnimNoDepthTest方法 BasicObjectFX::SetDrawBoltAnim...

文章目录 前言 几何着色器 可编程的几何着色器 从一个看似没什么用的几何着色器代码入手 实战1: 将一个三角形分割成三个三角形 HLSL代码 实战2: 通过圆线构造圆柱体侧面 HLSL代码 实战3: 画出顶点的法向量 HLSL代码 C++代码的部分变化 BasicObjectFX的变化 BasicObjectFX::SetRenderSplitedTriangle方法--渲染分裂的三角形 Basi...

文章目录 前言 混合等式 混合状态 混合运算符的设置 混合因子的设置 ID3D11Device::CreateBlendState方法--创建混合状态 ID3D11DeviceContext::OMSetBlendState方法--输出合并阶段设置混合状态 常用混合等式 无颜色写入混合 颜色加法混合 透明混合 光栅化状态 ID3D11Device::CreateRasterizerState方法-...

文章目录 前言 世界矩阵和观察矩阵 摄像机 摄像机抽象基类 第一人称/自由视角摄像机 构造观察矩阵 第三人称摄像机 球面坐标系 构造观察矩阵 合理对常量缓冲区进行分块 GameObject类--管理游戏物体 ID3D11DeviceContext::XXGetConstantBuffers系列方法--获取某一着色阶段的常量缓冲区 GameApp类的变化 GameApp::OnResize方法的变化...