第一步:新建MFC单文档项目,向导如下:

第二步:添加引用,在项目属性的VC++目录中修改Include和lib文件夹。

第三步:在stdafx.h文件Include部分的最后添加如下引用。

#include "d3d9.h"
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")

第四步:在视图类头文件中添加如下代码:

     LPDIRECT3D9             g_pD3D     ; //Direct3D对象
LPDIRECT3DDEVICE9 g_pd3dDevice; //Direct3D设备对象
HRESULT InitD3D( HWND hWnd );
VOID Render();

第五步:在实现文件中添加如下代码。

构造函数中添加:

 g_pD3D       = NULL; //Direct3D对象
g_pd3dDevice = NULL; //Direct3D设备对象

实现InitD3D(HWND hWnd):

 HRESULT CDirect3DFirstView:: InitD3D( HWND hWnd )
{
//创建Direct3D对象, 该对象用来创建Direct3D设备对象
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL; //设置D3DPRESENT_PARAMETERS结构, 准备创建Direct3D设备对象
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //创建Direct3D设备对象
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
} return S_OK;
}

实现Render():

 VOID CDirect3DFirstView:: Render()
{
//清空后台缓冲区
g_pd3dDevice->Clear( , NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(, , ), 1.0f, ); //开始在后台缓冲区绘制图形
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
//在此在后台缓冲区绘制图形 //结束在后台缓冲区渲染图形
g_pd3dDevice->EndScene();
} //将在后台缓冲区绘制的图形提交到前台缓冲区显示
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

Render

OnDraw中的代码:

 void CDirect3DFirstView::OnDraw(CDC* /*pDC*/)
{
CDirect3DFirstDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
if (g_pD3D==NULL)
{
if( SUCCEEDED( InitD3D( this->m_hWnd ) ) )
{
Render();
}
else
{
AfxMessageBox(L"error");
}
}
else
{
Render();
} // TODO: 在此处为本机数据添加绘制代码
}

OnDraw

第六步:编译运行,结果如下:

最新文章

  1. 判断IP地址是否合法类
  2. CSS裁剪clip
  3. Android之查看网络图片和网页HTML
  4. 集群管理 secondaryNameNode和NameNode(转)
  5. Activity——思维导图
  6. Undefined symbols for architecture x86_64 解决之道
  7. QStringRef可以提高性能,下次注意使用;QPair方便了语法,函数可以一次返回多个返回值,方便使用
  8. 计算机语言学习导论[C/C++]
  9. Ecstore的微信账号绑定会员免登录
  10. Django之路:简介以及环境
  11. 扩展 lua require 的行为
  12. web项目错误页面友好处理404,500等
  13. 关于Java泛型"擦除"的一点思考
  14. BZOJ_2393_Cirno的完美算数教室&&BZOJ_1853_[Scoi2010]幸运数字 _深搜+容斥原理
  15. CDI services--interceptors(拦截器)
  16. SharePoint Framework 基于团队的开发(三)
  17. MySQL_时间戳处理
  18. Windows驱动开发调试工具
  19. Spring通过在META-INF/spring.handlers中的属性进行配置文件解析
  20. luogu1328 [NOIp2014]生活大爆炸版石头剪刀布 (模拟)

热门文章

  1. HDU 1176 经典dp
  2. PHP 开启短标签
  3. XBox 开发者大会
  4. nginx调优
  5. XPath学习:轴(14)——总结
  6. Python中什么是set、更新、遍历set和set的特点
  7. 在HCI层ACL Connection的建立
  8. OC文件大小的计算方法,多用于清理缓存
  9. I方法 thinkphp
  10. Python基本数据类型之list列表