Dx11DemoBase 基类(三) 实例应用 【已实现】【附带源码】

现在我已经到哪了? 读书时,尤其是技术知识书籍, 我一般会担忧自己是否陷得太深, 细节关注得太多, 而忘了整体的过程; 一直以来对Direct3D 很畏惧, 因为太多函数和细节;现在我必须暂缓下, 看看自己已经做了什么, 还差什么, 下一步要如何规划。如下图:

 

已经仅仅完成了定义 "能够自动进行初始化工作的" 基类, 但是没能够 使用, 需要用子类实现 update(float) 和 render()  :

-- BlankDemo.h

#ifndef _BLANK_DEMO_H_
#define _BLANK_DEMO_H_#include "Dx11DemoBase.h"class BlankDemo : public Dx11DemoBase
{
public:BlankDemo();virtual ~BlankDemo();bool LoadContent();void UnloadContent();void Update( float dt);void Render();
};#endif

-- BlankDemo.cpp

#include "BlankDemo.h"BlankDemo::BlankDemo()
{}BlankDemo::~BlankDemo()
{}bool BlankDemo::LoadContent()
{return true;
}void BlankDemo::UnloadContent()
{}void BlankDemo::Update( float dt)
{}void BlankDemo::Render()
{if( d3dContext_ == 0)return ;    float clearColor[ 4] = { 0.0f, 0.0f, 0.25f, 1.0f };d3dContext_->ClearRenderTargetView( backBufferTarget_, clearColor);swapChain_->Present( 0, 0);
}

主要在 BlankDemo::Render() 内进行 清屏 和 显示.

到目前为止,共完成了两件事, 

第一  Windows 编程, 提供了简易 封装: 《Windows 窗体简易封装类 【已实现】【附带源码】》

第二  提供了 DirectX11 的 简易框架: 《Dx11DemoBase 基类(一)》《Dx11DemoBase 基类(二) 初始化 DirectX11 的 4个基本步骤》

下面将这两部分柔和, 使DirectX11 编程变得简易, 大致测试demo 将如:

#include <Windows.h>
#include "evlWin.h"            //windows 窗口封装
#include "BlankDemo.h"        //DirectX11 封装int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE prevInstance, PSTR cmdLine, int cmdShow)
{// 创建窗体EvlWin *eWin = new EvlWin( hInstance, prevInstance, cmdLine, cmdShow, NULL, NULL);// 显示窗体eWin->show();// DirectX11 处理对象Dx11DemoBase *demo = new BlankDemo();// DirectX11 相关初始化bool result = demo->Initialize( hInstance, eWin->m_hwnd);if( result == false)return -1;//不使用 eWin 事件循环//eWin->loopMessage();// 重写 windows 事件循环, 融入 DirectX11 
    MSG msg;while( TRUE ){if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE)){if( msg.message == WM_QUIT)break;TranslateMessage( &msg);DispatchMessage( &msg);}else{demo->Update( 0.0f);demo->Render();}}// 释放资源demo->Shutdown();delete demo;demo = NULL;return static_cast< int>( 0);
}

这是 源代码 : test_BlankDemo.rar, 包含 :

Dx11DemoBase.cpp/.h    DirectX11基类
BlankDemo.cpp/.h       测试Dx11DemoBase 的子类
evlWin.cpp/.h          windows窗体处理封装类
test_BlankDemo.cpp     主入口

最终效果就是显示一个 窗体( 相当 简陋, 此版本的demo 还有很多地方需要进行优化, 但考虑到自己是 刚学, 尽量还是不要钻太深, 先将过程走完先, 对整体有个把握.)

转载于:https://www.cnblogs.com/Wilson-Loo/archive/2012/11/30/2791874.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改 decimal 默认值为0.00 sql_被经理邀请去“爬山”,只是因为我写错了一条SQL语句?...

作者&#xff1a;isysc1链接&#xff1a;https://juejin.im/post/5f06a2156fb9a07e5f5180df来源&#xff1a;掘金前戏SQL 写的妙&#xff0c;涨薪呱呱叫&#xff01;新来的实习生小杨写了一条 SQL 语句SELECT wx_id from user WHERE wx_id 2当小杨迫不及待准备下班回家的时候&…

JS中关于clientWidth、offsetWidth、scrollWidth

网页可见区域宽&#xff1a; document.body.clientWidth;网页可见区域高&#xff1a; document.body.clientHeight;网页可见区域宽&#xff1a; document.body.offsetWidth (包括边线的宽);网页可见区域高&#xff1a; document.body.offsetHeight (包括边线的宽);网页正文全…

shell 执行失败重试_Uipath 机器人总是运行失败怎么办?

要知道为什么RPA机器人容易失败&#xff0c;首先了解下它和常规的应用系统有哪些区别。常规应用系统&#xff0c;就像程序员自己创造了一个世界、一个域&#xff0c;在这个世界里创造它的人就是主宰。出现BUG的风险是相对可控的&#xff0c;顶多是功能用不了。而RPA项目&#x…

c mysql安装教程视频_MySQL安装教程 - Windows安装MySQL教程 - 小白式安装MySQL教程 - 青衫慧博客...

版权声明本文转发自旧站点萧瑟云日志&#xff0c;近期考虑准备将旧站进行关闭(没有精力维护)&#xff0c;部分文章将会迁移至本站。文章发表于&#xff1a;2017-10-28 12:32:03前言上次给大家带来了SQL Server的小白式安装教程&#xff0c;这次再次带来一个MySQL的小白式安装教…

PJSIP UA分析(1)--PJSUA主函数

1 intmain(intargc, char*argv[])2 {3 do{4 app_restart PJ_FALSE; //PJ_FALSE是一个宏&#xff0c;一旦用户调用pjsua可执行文件进入该循环&#xff0c;那么默认只执行一次退出5 //如果需要再次循环&#xff0c;那么在下面函数中…

锁定表头和固定列(Fixed table head and columns)

前段时间需要这个功能&#xff0c;但是找了很多都不能完美的实现&#xff0c;不是只能锁定表头&#xff0c;就是浏览器兼容问题什么的&#xff0c;在此就自己做了一个锁定表头和列的js方法&#xff0c;依赖于JQuery。 因为方法很简单&#xff0c;就未封装成插件的形式&#xff…

游戏详细设计说明书_宜家的说明书设计脑洞太大了!

平常我们看到的说明书是像这样纯文字解说的或者是规范的文字配图这些说明书一般都是注重文字的上表达而大家熟悉的家居品牌宜家将说明书创意玩出了新境界&#xff01;↓↓↓这不&#xff0c;最近由于全球疫情严峻期间宜家的全新说明书手册搜罗了各种纸上游戏意为帮助大家打发无…

centos删除php_centos如何卸载php

查看php版本php -v查看php相关软件包#rpm -qa|grep php(视频教程推荐&#xff1a;linux视频教程)提示如下&#xff1a;#php-pdo-5.1.6-27.el5_5.3#php-mysql-5.1.6-27.el5_5.3#php-xml-5.1.6-27.el5_5.3#php-cli-5.1.6-27.el5_5.3#php-common-5.1.6-27.el5_5.3#php-gd-5.1.6-27…

cgblib 代理接口原理_Java开发者你还不知道?告诉你Dubbo 的底层原理,面试不再怕...

前言平常我们在构建分布式系统的时候&#xff0c;一般都是基于 Dubbo 技术栈或者是SpringCloud 技术栈来做。早期其实最先比较流行的是Dubbo&#xff0c;我记得我们当时有个部分的老大就是用的是Dubbo 来构建的一个系统&#xff0c;到后面才出来的 SpringCloud&#xff0c;由于…

包含对流环热,热流边界,等温边界的稳态热传导方程的FEM求解。

以下面的问题为例&#xff1a;对于如图所示的平面传热问题&#xff0c; 若上端有给定的热流-2W/m2&#xff0c;即从下往上传输热量&#xff0c;结构下端有确定的温度100&#xff0c;周围介质温度为20&#xff0c;在两侧有换热&#xff0c;换热系数为α100W/㎡/K&#xff0c;热导…

python生成动态二维码实例_python生成动态个性二维码(示例代码)

1 安装工具 2 生成普通二维码 3 带图片的二维码 4 动态 GIF 二维码 5 在Python程序中使用 一、安装 首先在python环境下运行&#xff0c; 打开cmd进入python27 进入scripts 然后在scripts输入命令&#xff1a;pip install myqr二、 生成普通二维码 安装了 myqr 之后&#xff0c…

matlab武汉理工大学数值分析线性函数拟合实验_「首席架构师推荐」数值计算库精选...

这是一个著名的数值库列表&#xff0c;这些库用于软件开发中执行数值计算。它不是一个完整的列表&#xff0c;而是一个包含Wikipedia上文章的数字库列表&#xff0c;很少有例外。典型库的选择取决于一系列不同的需求&#xff0c;例如:期望的特性(例如:大维线性代数、并行计算、…

JSONP跨域原理和jQuery.getJSON用法

JSONP是一个非官方的协议&#xff0c;它允许在服务器端集成Script tags返回至客户端&#xff0c;通过javascript callback的形式实现跨域访问&#xff08;这仅仅是JSONP简单的实现形式&#xff09;。本文主要介绍JSONP跨域原理&#xff0c;一起来看。 JSONP是一个非官方的协议&…

串口输出5v电压_为什么RS485比串口速度快距离远?--谈单端信号与差分信号之差异...

嵌入式系统中&#xff0c;串口、RS485、CAN、网络和USB等都是非常常用的通信方式。但是串口通信速度慢&#xff0c;距离近&#xff0c;为什么转换成RS485后&#xff0c;通信距离和速度都大幅提高了呢&#xff1f;USB也是近距离&#xff0c;为什么速度可以这么快&#xff1f;原因…

IIS7.0站点/虚拟目录中访问共享

目的&#xff1a;实现一个2008serve的IIS的虚拟目录&#xff08;通过网络路径&#xff08;UNC&#xff09;的形式&#xff0c;共享在另外一个2008服务器上&#xff09; 准备工作1.运行组策略编辑器&#xff08;gpedit.msc&#xff09;&#xff1b;找到本地安全策略-本地策略-安…

易语言操作php文本文件,易语言对文本操作的步骤教学

在易语言编程中&#xff0c;我们往往需要对一些文字进行截取或分割出来&#xff0c;如何准确、快速的实现这一目标呢&#xff1f;下面笔者来为大家演示1、首先&#xff0c;我们打开易语言编程软件&#xff0c;点击左上角&#xff0c;新建一个文件&#xff0c;如图所示2、我们点…

xxl-job 执行结果是空_xxljob dotnet core executor执行器开源

DotXxlJob[(github)https://github.com/xuanye/DotXxlJob][https://github.com/xuanye/DotXxlJob] xxl-job的dotnet core 执行器实现&#xff0c;支持XXL-JOB 2.01 XXL-JOB概述[XXL-JOB][1]是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量…

php5.4 windows2003,PHP实战:Windows2003下php5.4安装配置教程(IIS)

《PHP实战&#xff1a;Windows2003下php5.4安装配置教程(IIS)》要点&#xff1a;本文介绍了PHP实战&#xff1a;Windows2003下php5.4安装配置教程(IIS)&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。PHP教程一、在Windows2003安装IISPHP教程1、首先打开Windo…

foxmail 怎么把邮件格式默认为html_Python SMTP发送邮件-smtplib模块

在进入正题之前&#xff0c;我们需要对一些基本内容有所了解&#xff1a;常用的电子邮件协议有SMTP、POP3、IMAP4&#xff0c;它们都隶属于TCP/IP协议簇&#xff0c;默认状态下&#xff0c;分别通过TCP端口25、110和143建立连接。Python内置对SMTP的支持&#xff0c;该协议支持…

Qt creator工程项目移植时因环境变换造成qmake错误的解决方案

1.问题描述&#xff1a;移植从他机上的qt工程项目&#xff0c;打开时提示&#xff1a; Qt Creator找到了一个由其他开发环境创建的设置文件&#xff0c;或许是来自于其他机器的。用户设置文件包含了特定的环境设定&#xff0c;它不应当被复制到其他应用环境中去。 你仍然想载入…