网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 网络攻防 > 安全文摘 > 一个D3D程序  

一个D3D程序

2005-10-25  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


作者:☆群侠☆… 文章来源:qxtianlong.77169.com

#include
LPDIRECT3D8
g_pD3D = NULL; //
用来创建D3D设备
LPDIRECT3DDEVICE8 g_pd3dDevice
= NULL; // D3D设备
// 初始化D3D
HRESULT InitD3D( HWND hWnd )
{
  //
创建D3D对象
  if( NULL == ( g_pD3D = Direct3DCreate8(
D3D_SDK_VERSION ) ) )
  return
E_FAIL;
  // 获取当前的显示模式
  D3DDISPLAYMODE
d3ddm;
  if( FAILED( g_pD3D->GetAdapterDisplayMode(
D3DADAPTER_DEFAULT, &d3ddm ) )
)
  return E_FAIL;
  D3DPRESENT_PARAMETERS d3dpp;
 
ZeroMemory( &d3dpp, sizeof(d3dpp) );
  d3dpp.Windowed =
TRUE;// 窗口模式
 
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 设置交换模式
 
d3dpp.BackBufferFormat = d3ddm.Format;// 设置背景缓冲区格式为当前左面格式
 // 创建D3D设备
 // 第一个参数:使用默认的显卡适配器 网管u家u.bitsCN.com
 //
第二个参数:请求使用硬件抽象层(HAL)
 // 第三个参数:窗口句柄
 //
第四个参数:使用软件处理顶点
 // 第五个参数:创建的参数
 //
第六个参数:创建的D3D设备指针
  if( FAILED( g_pD3D->CreateDevice(
D3DADAPTER_DEFAULT,
 D3DDEVTYPE_HAL,
 
hWnd,
 
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
 
&d3dpp,
 
&g_pd3dDevice ) ) )
 
{
  return
E_FAIL;
  }
  return S_OK;
}
// 释放D3D
VOID Cleanup()
{
  if( g_pd3dDevice !=
NULL)
 
g_pd3dDevice->Release();
  if( g_pD3D !=
NULL)
 
g_pD3D->Release();
}
// 渲染
VOID Render()
{
  if( NULL == g_pd3dDevice
)
  return;
  // 清除背景为兰色 网管论坛bbs_bitsCN_com
  g_pd3dDevice->Clear(
0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0
);
 
  // 开始绘制场景
 
g_pd3dDevice->BeginScene();
 
  //
这里绘制你需要的东西
 
  //
结束场景绘制
  g_pd3dDevice->EndScene();
 
  // 显示到屏幕上
  g_pd3dDevice->Present(
NULL, NULL, NULL, NULL );
}
// 消息处理
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam,
LPARAM lParam )
{
  switch( msg )
 
{
  case WM_DESTROY: //
退出消息
 
PostQuitMessage( 0
);
  return
0;
  case WM_PAINT://
绘制
 
Render();
 
ValidateRect( hWnd, NULL
);
  return
0;
  }
  return DefWindowProc( hWnd, msg, wParam, lParam
);
}

网管论坛bbs_bitsCN_com


// WinMain程序入口
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT
)
{
  // 注册窗口类
  WNDCLASSEX wc = {
sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
 
GetModuleHandle(NULL), NULL, NULL, NULL,
NULL,
 
"class", NULL };
  RegisterClassEx( &wc );
  // 创建窗口
  HWND hWnd = CreateWindow(
"class", "3D学习笔记1",
 
WS_OVERLAPPEDWINDOW, 100, 100, 300,
300,
 
GetDesktopWindow(), NULL, wc.hInstance, NULL );
  // 初始化D3D
  if( SUCCEEDED( InitD3D(
hWnd ) ) )
  {
  //
显示窗口
  ShowWindow( hWnd,
SW_SHOWDEFAULT );
  UpdateWindow(
hWnd );
  //
消息循环
  MSG msg;
  while( GetMessage( &msg, 网管网www.bitscn.com
NULL, 0, 0 ) )
 
{
 
TranslateMessage( &msg
);
 
DispatchMessage( &msg );
 
}
  }
  // 结束处理
 
Cleanup();
  UnregisterClass( "class", wc.hInstance
);
  return 0;
}


TAGs   程序   一个   NULL   return   hWnd   D3D   msg   if   创建   参数      
 上一篇:FSG2.0脱壳心得   下一篇:灰鸽子vip2005检测器 检测原理简单分析
一个D3D程序 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: