当前位置: 首页 > news >正文

长春网站建设硕成传媒曹妃甸建设局网站

长春网站建设硕成传媒,曹妃甸建设局网站,友情链接买卖,WordPress 会员空间插件Visual Studio为开发Direct3D应用程序提供了便捷的模版#xff0c;读者可以不必手动去新建Direct3D中所使用到的基础资源#xff0c;而只需专注于图形的绘制。本小节主要为读者介绍这个模版中用于绘制图形的主要函数及其功能#xff0c;为了能让读者更为清楚地了解如何使用此…Visual Studio为开发Direct3D应用程序提供了便捷的模版读者可以不必手动去新建Direct3D中所使用到的基础资源而只需专注于图形的绘制。本小节主要为读者介绍这个模版中用于绘制图形的主要函数及其功能为了能让读者更为清楚地了解如何使用此模版绘制三维立体图形下面的介绍将分为四部分其中第一部分介绍在Visual Staudio 2012中如何新建Direct3D项目模版第二部分介绍Direct3D项目模版中用于设置观察视点的函数和设置投影矩阵的函数第三部分紧接着来介绍Direct3D项目模版中用于创建着色器和立体图形顶点的函数最后一部分介绍Direct3D项目模版中用于绘制立体图形的函数。 1新建Direct3D项目模版 打开Visual Studio单击文件菜单在出现的下拉菜单栏中选择新建项目弹出新建项目窗口并选择Visual C菜单栏的Windows应用商店选项接着选中Direct3D应用程序如图20-22所示。 图20-22 添加Direct3D项目模版 通过上述的步骤可以新建一个Direct3D应用程序项目作为开发Direct3D应用程序的模版在这个项目中主要包含如下的文件 BasicTimer.h头文件在这个头文件中定义了一个作为计时器的BasicTimer类。 DirectXHelper.h头文件在这个头文件中定义了用于处理异常和读取资源文件的函数。 CubeRenderer.h头文件用于声明在CubeRenderer.cpp源文件中所使用的变量和函数。 Direct3Dbase.h头文件用于声明在Direct3DBase.cpp源文件中所使用的变量和函数。 CubeRenderer.cpp源文件在这个源文件中添加用于绘制立体图形的实现代码。 Direct3DBase.cpp源文件在这个源文件中添加用于新建Direct3D资源的实现代码。 SimplePixelShader.hlsl文件用于解析像素着色器的信息。 SimpleVertexShader.hlsl文件用于解析顶点着色器的信息。 了解了如何在Visual Staudio 2012中新建一个用于开发Direct3D应用程序的模版以后下面将介绍此模版中用于设置观察视点的函数和设置投影矩阵的函数。 2Update函数和CreateWindowSizeDependentResources函数 在介绍Update函数和CreateWindowSizeDependentResources函数之前首先来介绍ModelViewProjectionConstantBuffer结构体此结构体默认定义在CubeRenderer.h头文件中代码如下所示 struct ModelViewProjectionConstantBuffer {     DirectX::XMFLOAT4X4 model;     DirectX::XMFLOAT4X4 view;     DirectX::XMFLOAT4X4 projection; }; 在ModelViewProjectionConstantBuffer结构体中定义了三个XMFLOAT4X4结构体的变量分别是model、view和projection。其中model结构体变量用于表示立体图形的世界矩阵view结构体变量用于表示立体图形的观察矩阵projection结构体变量用于表示立体图形的投影矩阵。 CubeRenderer.cpp源文件的Update函数用于设置观察视点此观察视点用来将三维立体图形呈现在应用窗口中。Update函数的实现代码如下所示 void CubeRenderer::Update(float timeTotal, float timeDelta) {     // 未使用的参数     (void) timeDelta;     //观察视点的位置X0.0,Y0.7,Z1.5,W0.0     XMVECTOR eye XMVectorSet(0.0f, 0.7f, 1.5f, 0.0f);     //观察目标的位置X0.0,Y-0.1,Z0.0,W0.0     XMVECTOR at XMVectorSet(0.0f, -0.1f, 0.0f, 0.0f);     //观察视点的向上向量X0.0,Y1.0,Z0.0,W0.0     XMVECTOR up XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);     //设置观察视点     XMStoreFloat4x4(m_constantBufferData.view, XMMatrixTranspose(XMMatrixLookAtRH(eye, at, up)));     //设置世界矩阵     XMStoreFloat4x4(m_constantBufferData.model, XMMatrixTranspose(XMMatrixRotationY(timeTotal * XM_PIDIV4))); } 在上面的代码中定义了三个XMVECTOR类型的变量eye、at和up其中eye变量用于储存观察视点的位置at变量用于储存观察目标的位置up变量用于储存观察视点的向上向量。调用XMVectorSet函数将观察视点的位置设为{0.0f0.7f1.5f0.0f }并将观察目标的位置设为{0.0f-1.0f0.0f0.0f }接着将观察视点的向上向量设为{0.0f1.0f0.0f0.0f}。接下来调用XMMatrixLookAtRH函数并使用eye变量、at变量和up变量作为参数得到一个矩阵并以这个矩阵作为参数调用XMMatrixTranspose函数得到一个转置矩阵接着调用XMStoreFloat4x4函数将此转置矩阵存储到view结构体变量中。 然后以参数timeTotal乘以XM_PIDIV4常量所得到的值作为参数调用XMMatrixRotationY 函数得到一个绕Y轴的旋转矩阵并以这个旋转矩阵作为参数调用XMMatrixTranspose函数得到一个转置矩阵最后调用XMStoreFloat4x4函数将这个转置矩阵存储到model结构体变量中使立体图形绕Y轴旋转。 CubeRenderer.cpp源文件的CreateWindowSizeDependentResources函数用于设置投影矩阵此函数的实现代码如下所示 void CubeRenderer::CreateWindowSizeDependentResources() {     Direct3DBase::CreateWindowSizeDependentResources();     //定义aspectRatio变量     float aspectRatio m_windowBounds.Width / m_windowBounds.Height;     //定义fovAngleY变量     float fovAngleY 70.0f * XM_PI / 180.0f;     //设置投影矩阵     XMStoreFloat4x4(         m_constantBufferData.projection,         XMMatrixTranspose(             XMMatrixMultiply(                 XMMatrixPerspectiveFovRH(fovAngleY,                     aspectRatio,                     0.01f,                     100.0f                 ),     XMLoadFloat4x4(m_orientationTransform3D)             )         )     ); } 在上面的代码中首先调用定义在Direct3DBase.cpp源文件中的CreateWindowSizeDependentResources函数来新建与应用窗口大小相关的资源。然后定义两个float类型的变量aspectRatio和fovAngleY将应用窗口的宽度除以应用窗口的高度所得到的值赋给aspectRatio变量并将70.0f乘以XM_PI常量再除以180.0f所得到的值赋给fovAngleY变量。接着以aspectRatio变量和fovAngleY变量作为参数调用XMMatrixPerspectiveFovRH函数来得到一个右手透视投影矩阵使用XMMatrixMultiply函数将这个左手透视矩阵乘以XMLoadFloat4x4函数所返回的矩阵得到一个新矩阵并以这个新矩阵作为参数调用XMMatrixTranspose函数得到一个转置矩阵最后调用XMStoreFloat4x4函数将这个转置矩阵存储到projection结构体变量中。
http://www.sadfv.cn/news/351425/

相关文章:

  • 区域教育联盟网站建设最新营销模式
  • 温州网站制作计划镇江百度代理
  • 怎么做网站推广net做公司网站是否适合
  • 网站开发的选题意义及背景wordpress 关联
  • 湛江模板做网站跨境电商网站开发
  • 网站源码交易网青岛做视频的网站
  • 池州网站建设费用网页游戏在线玩链接
  • 网站建设的总结做外贸网站格式
  • 网站后台维护系统大数据免费查询平台
  • 网站突然暴增流量图片在线制作生成器免费
  • 建网站的网络公司的名称以及服务企业网络营销项目
  • 秦皇岛网站制作人才招聘全网普盖网站建设河南
  • 绍兴网站建设做网站怎么进电力建设公司网站
  • 找工程分包网站成都防疫最新动态
  • 企业形象通用网站网站程序预装
  • 网站开发人员资质网站产品详情页怎么做
  • 菜鸟网站建设建设网站怎么收费标准
  • 品牌网站建设方案网站设计与开发实例
  • 菏泽网站制作襄阳谷城网站开发
  • 环保网站模版菜户营网站建设
  • 广州学校网站建设软件界面设计方案
  • 地信的网站建设灌云网站设计
  • 企业网站建设文档池州网络推广
  • 一个网站空间可以做多少个网站做网站能挣多少钱
  • 哪个网站科技新闻好工程公司简介范文
  • 有哪些网站可以做问卷调查wordpress只显示文字
  • 磁力搜索引擎哪个好智推教育seo课程
  • 专注扬中网站建设昆明官方网站建设
  • 济南网站建设山东聚搜网力推建设网站需要专业
  • 陕西建设厅网站人才库建筑设计图用什么软件