dx11学习笔记-4、用DX画一个旋转的立方体

3D图形学编程基础-基于Direct3D11-学习记录(一)初始化DX设备,实现立方体绘制 第一次写博客这个东西,平时自己学习的时候记录的东西都是纸质的,查找不太方便,而且由于自己得不少知识学习都来自优快云。所以在这里做一个我自学的记录! 由于第一次学习Directx,记录的很多东西都是自己简单了解到的。可能不全,甚至可能不对,先记录下,以后修改! 基于VisualC++,Directx学习记录正式开始: 一:基础概念的了解 1.Direct3D的定义:是微软公司创建的多媒体编 阅读详情

继续按照MS的官方教程来整理知识点。上一篇我们从理论层面讲了顶点变换,这一篇我们将把理论用于实践。DX11中对顶点的变换操作同样是在顶点着色器中进行,所以除了顶点信息之外,我们需要把变换矩阵也添入着色器输入的队伍中去。

初始化变换矩阵

为了方便操作,我们将三个变换矩阵都放在一个结构体中,这个结构体将作为常量缓存输入着色器。

struct ConstantBuffer
{
    XMMATRIX mWorld;
    XMMATRIX mView;
    XMMATRIX mProjection;
};

全局变量新增:

ID3D11Buffer*           g_pConstantBuffer = NULL;
XMMATRIX                g_World;
XMMATRIX                g_View;
XMMATRIX                g_Projection;

InitDevice()新增:

    // Create the constant buffer
    bd.Usage = D3D11_USAGE_DEFAULT;
    bd.ByteWidth = sizeof(ConstantBuffer);
    //绑定信息是常量缓存
    bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
    bd.CPUAccessFlags = 0;
    //先传NULL数据进去,render时再更新g_pConstantBuffer
    hr = g_pd3dDevice->CreateBuffer( &bd, NULL, &g_pConstantBuffer );
    if( FAILED( hr ) )
        return hr;

    //初始化各个矩阵
    //设置模型矩阵,以标准矩阵初始化
    // Initialize the world matrix
    g_World = XMMatrixIdentity();

    //设置视图矩阵,初始化照相机位置和朝向
    // Initialize the view matrix
    XMVECTOR Eye = XMVectorSet( 0.0f, 1.0f, -5.0f, 0.0f );
    XMVECTOR At = XMVectorSet( 0.0f, 1.0f, 0.0f, 0.0f );
    XMVECTOR Up = XMVectorSet( 0.0f, 1.0f, 0.0f, 0.0f );
    g_View = XMMatrixLookAtLH( Eye, At, Up );

    //设置透视投影矩阵,XM_PIDIV2=1.57,是y方向上视野角的弧度值;width和height是窗口客户区的宽高
    // Initialize the projection matrix
    g_Projection = XMMatrixPerspectiveFovLH( XM_PIDIV2, width / (FLOAT)height, 0.01f, 100.0f );

渲染时输入变换矩阵的实际值

在Render()时,我们将更新g_pConstantBuffer的填充数据

    ConstantBuffer cb;
    cb.mWorld = XMMatrixTranspose( g_World );
    cb.mView = XMMatrixTransp
DirectX学习笔记(三):利用线框模式绘制可旋转的正方体 前言: 一个场景中,任何物体都可以用三角形网格来逼近表示。也就是说,三角形网格是构成物体模型的基本单元。 如图: 利用线框模式绘制可旋转的正方体的具体操作: 1.顶点缓存和索引缓存: 一个多边形中相邻的交汇点称为顶点,描述三角形单元时,我们需要指定该三角形3个顶点的位置。那么如果我们要通过三角形单元来描述一个物体,就需要指定构成该物体的三角形单元。但是 阅读详情

相关推荐

DirectX11学习笔记二 渲染一个立方体

上一节画三角形只有三个顶点,所以直接按照三个顶点顺序画即可。不过那里漏过了一个细节,那就是你的三角形的顶点顺序,这里要引入一个叫“背面消除(backface culling)”的概念。因为三角形有两个面,假如你的正面是背对着摄像机,那摄像机就不会渲染你三角形的正面的图像(被剔除掉),复习一下上节所传入的三角形顶点。 // 设置三角形顶点 VertexPosColor vertices[] = ...

MaxLykoS的博客 2575

笔记----DX11.0转为DX11.2

在DX11.2中已经移除了D3DX,xnamath等文件 数学库由DirectXMath,D3DX由DirectXTK,DirectXTex代替 DirectXTex:点击打开链接 DirectXTK:点击打开链接 以下列举几个需要注意的: DX11.0中创建旋转矩阵使用: D3DXMATRIX* D3DXMatrixRotationYawPitch

孤独de守候的专栏 2837

DX11 纹理

DX11 纹理 目录 文章目录DX11 纹理题目&要求存在问题学习情况&整体思路一、顶点输入布局二、纹理坐标系三、纹理采样四、其他资源绑定作业相关代码&代码分析思考&小结 题目&要求 题目 给一个立方体六个面贴不同的纹理,并且使用方向光光照 利用纹理数组实现2D纹理动画(09项目中的火焰动画) 给一个立方体六个面贴上同一个纹理,这个纹理利用给定的两张纹理进行合成,并且实现纹理在立方体面上的旋转(提示:顶点着色器),关闭光照,还可以

qq_62090651的博客 1154

Directx11绘制立方体

Directx11绘制一个立方体和四面体,用了我博客一个简单的框架封装,适合初学者学Directx11程序。

用DirectX绘制一个立方体的完整代码

用DirectX绘制的立方体 利用顶点缓冲与索引缓冲绘制立方体 设置立方体的顶点坐标与颜色信息; 创建顶点缓冲区与索引缓冲区; 分别在顶点与索引缓冲区内完成对顶点信息的拷贝 使用Direct3D接口完成立方体的绘制

【C++】旋转的彩色立方体 by浅墨

零资源分下载,分享精神至上~ 【Visual C++】游戏开发笔记之【浅墨DirectX提高班】系列博文 配套详细注释源码之六 源码配套博文 《【Visual C++】游戏开发笔记三十八 浅墨DirectX提高班之六 携手迈向三维世界:四大变换展身手》 ,文章地址为http://blog.youkuaiyun.com/zhmxy555/article/details/8408723, 点击debug下的exe文件可以直接看到运行效果,运行需要DirectX运行库的支持。按键盘上的“1”键显示线框填充模式的图形,按键盘上的“2”键显示实体填充模式的图形。 编写环境:VS2010 我的博客地址是http://blog.youkuaiyun.com/zhmxy555,源码结合配套文章一起看效果更佳。 希望能和大家一起交流,共同学习,共同进步。 by浅墨

HDMI接口技术解析:从基础到应用

本文深入解析HDMI接口技术,从其发展历程、物理结构到传输原理,全面剖析HDMI如何成为影音传输的主流标准。通过对比不同版本的带宽升级和实际应用案例,展示HDMI在4K/8K视频传输中的卓越性能,并分享硬件设计中的实战经验与避坑指南。

weixin_30485379的博客 369

STM32CubeMX实战:FreeRTOS内存管理5种方案全解析(附heap_4避坑指南)

本文深入解析了STM32CubeMX环境下FreeRTOS的5种内存管理方案(heap_1到heap_5),重点介绍了heap_4的优化策略与避坑指南。通过对比分析各方案的特点、性能指标及适用场景,帮助开发者根据项目需求选择最优内存管理策略,提升嵌入式系统开发效率与稳定性。

aa123的博客 618

RPCA模型及GoDec算法

一、基础知识 在线性代数中,秩的物理意义是矩阵中最大的不相关的向量个数,因此秩可以用来度量相关性;而在图像处理中,秩就可以理解为图像中所包含的信息的丰富程度。图片中比较突兀的成分,会增加图像矩阵的秩,一幅清晰的自然图像其数据矩阵往往是低秩或者近似低秩的,这是因为其中的图像信息有很大的相关性,但如果图像中引入噪声,那么存在随机幅值任意大但是分布稀疏的误差破坏了原有数据的低秩性。 低秩矩阵:如果AAA是一个m×nm×nm×n的矩阵,rank(A)rank(A)rank(A)是矩阵AAA的秩,如果rank(A)

小席的学习日志 7687

python模拟银行交易流水

模拟自动生成银行交易流水,其中包括:入账账号、出账账号、交易金额、交易余额、交易时间、出入表示关键字段

qq_31823889的博客 2910

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛用于连接计算机的各种硬件设备。PCIe4.0是目前较为先进的版本,提供了高达64GB/s的带宽。InfiniBand是一种用于高性能计算的高速互连技术,通过交换机在节点之间直接创建一个专用的受保护通道。InfiniBand适配器通过PCIe接口连接到CPU,另一端通过InfiniBand网络端口连接到InfiniBand子网。

全世界的博客 7543

Applied Intelligence投稿经验分享(正在投稿中)

这几天在投稿Applied Intelligence这个期刊,过程很曲折,反反复复,因此写一篇经验分享,希望能记录一下自己的过程,也能给其他人一些帮助(可以在评论区讨论),提醒一下,一定要写一些声明,不会写、不知道写啥就看第四章的第二个问题。

weixin_55988068的博客 1万+

论文必备 - YOLOv8训练前一键扩充数据集,支持9种扩充方法,支持图像和标签同步扩充

在网络模型训练前,大量的数据集是必备的。而对于一些特殊场景中的特殊目标,大量的数据集往往难以获取,无法满足模型训练的基本需求。本文提供了,脚本可一键运行,。

Limiiiing的博客 769

C++ Qt6 QtQuick/QML入门进阶与项目实战视频教程

C++ Qt这些年在PC客户端、嵌入式、汽车座舱仪表等领域应用很广泛,例如剪映专业版、微信4.0、亿图脑图、Steam、美图秀秀、腾讯会议、钉钉(部分模块)等都是使用C++ QWidget/QML开发。特别是QML这种声明式UI开发更加快捷,QML的界面开发效率相对于QWidget更快速,界面效果更好,QtQuick/QML在Qt6版本也逐渐完善了,使用QML进行客户端开发是个不错的选择。

琅嬛福地 4483

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: dx11学习笔记-3.三维空间变换(自己整理,基础详尽)
下一篇: H5 canvas drawImage 无法显示
code_xbug
博客等级 码龄13年 26粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值