D3D程序的建立过程

转载 2005年05月11日 20:59:00

1. 首先是建立一个程序框架,用单文档界面就可以了。
2. 以CWnd为基类,派生一个窗口类CD3DWnd。
3. 在主窗口增加一个CD3DWnd数据类型成员,也既是产生一个
CD3DWnd对象。
方法:CD3DWnd m_pWndD3D; //标准的命名方法
2.利用类向导添加两个消息处理函数

//用于创建并显示一个CD3DWnd窗口
void CMainFrame::OnD3dBegin()
{
 m_wndD3D.CreateEx(
  0,AfxRegisterWndClass(0,NULL,NULL,NULL),
  "Direct3D窗口",WS_POPUP|WS_CAPTION|WS_VISIBLE,
  CRect(100,100,500,500),this,0);
  //: Add your command handler code here
 
}

//销毁窗口
void CMainFrame::OnD3dEnd()
{
 // TODO: Add your command handler code here
 m_wndD3D.DestroyWindow();
}

小结:通过上面的部分就能为建立D3D搭一个桥了,只是现在建立的窗口只是一个MFC窗口。下面的部分为它添加DIRECT3D的功能。

4. 初始化Direct3D
A. 创建Direct3D对象
   LPDIRECT3D9 m_pD3D;
   LPDIRECT3DDEVICE9 m_pDevice;
   void InitD3D();

void InitD3D()的代码
void CD3DWnd::InitD3D()
{
 m_pD3D=::Direct3DCreate9(D3D_SDK_VERSION);
 D3DPRESENT_PARAMETERS d3dpp;
 ::ZeroMemory(&d3dpp,sizeof(d3dpp));
 d3dpp.Windowed=TRUE;
    d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
 d3dpp.BackBufferFormat=D3DFMT_UNKNOWN;

 m_pD3D->CreateDevice(
  D3DADAPTER_DEFAULT,
  D3DDEVTYPE_HAL,
  m_hWnd,
  D3DCREATE_SOFTWARE_VERTEXPROCESSING,
  &d3dpp,&m_pDevice);
}
这个初始化函数建立好之后还要在CWndD3D中创建创建函数,以便调用InitD3D
int CD3DWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CWnd::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 // TODO: Add your specialized creation code here
 InitD3D();
 return 0;
}

B. 为创建好的Direct3D对象创建设备对象
渲染部分
还是必须先创建这个函数
void CD3DWnd::Render()
{
 m_pDevice->Clear(
  0,NULL,D3DCLEAR_TARGET,
  D3DCOLOR_XRGB(0,255,255),
  1.0f,0);
 m_pDevice->BeginScene();
 m_pDevice->EndScene();
 m_pDevice->Present(NULL,NULL,NULL,NULL);
}
然后再调用
void CD3DWnd::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 Render();
 // TODO: Add your message handler code here
 
 // Do not call CWnd::OnPaint() for painting messages
}
5. 释放接口
分两部分
第一部分是把设备对象和D3D对象按照次序释放。
void CD3DWnd::Cleanup()
{
 m_pDevice->Release();
 m_pD3D->Release();

}
第二部分是把CD3DWnd类在内存中师范出来。
void CD3DWnd::OnDestroy()
{
 CWnd::OnDestroy();
 Cleanup();
 // TODO: Add your message handler code here
 
}

在unity3D里建立leap motion API的过程

 Setting up aproject in Unity 3D在unity3D建立一个工程 The Leap Motionasset package includes in ...

面向过程的D3D应用程序框架

  • 2010年12月10日 23:23
  • 2.81MB
  • 下载

delta3d安装全过程

  • 2017年11月01日 22:38
  • 3.51MB
  • 下载

Unity3D游戏游戏化之DrawCall优化过程分析详解

本文固定链接: http://www.yxkfw.com/?p=6819 转载请注明: 游戏开发 2014年09月15日 于 游戏开发网-最好的游戏编程开发技术网站! 发表...

ANSYS导入FLAC3D全过程

  • 2013年12月03日 15:54
  • 258KB
  • 下载

VR开发入门:3D图像的处理过程

在进行第一个VR应用开发之前,我们来看看几个重要的概念:   搭建场景:创建一个可视化、可交互、脚本驱动的虚拟现实环境。   立体渲染:用两个相机渲染场景分别表示用户的左右眼,然后通过Oc...
  • lalate
  • lalate
  • 2016年05月25日 15:33
  • 3475

Unity3D粒子系统之颜色和渐变过程

对于很多unity3d的初学者来说,对于unity3d粒子系统中的颜色和渐变编辑器该如何使用呢?这里我想告诉大家的是对于学习,不管是学习何种知识,都是没有捷径可寻的,唯有认认真真好好学习,经过理论和实...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:D3D程序的建立过程
举报原因:
原因补充:

(最多只允许输入30个字)