Direct3D 学习心得1

   我安装的是VC+DX9.0,可是DX8.0下的 例子运行不了,在网上找了好多资料都没有解决办法,只好重新开始学了。 下了一个。在WWW。GAMERES。COM的网站下,我下了3DGame,看了一下源码。和VC的WINMAIN下没有什么多大的区别,我感觉对我最有用处的是一个全屏显示和最小显示,并不是多难,在过程中,有一连灌的步聚,先初始化一个D3D9的接口   

IDirect3D9* d3d9 = 0;
    d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

    if( !d3d9 )
 {
  ::MessageBox(0, "Direct3DCreate9() - FAILED", 0, 0);
  return false;
 } 

如下则是显示WINDOWS里面的参数

  WNDCLASS wc;

 wc.style         = CS_HREDRAW | CS_VREDRAW;
 wc.lpfnWndProc   = (WNDPROC)d3d::WndProc;
 wc.cbClsExtra    = 0;
 wc.cbWndExtra    = 0;
 wc.hInstance     = hInstance;
 wc.hIcon         = LoadIcon(0, IDI_APPLICATION);
 wc.hCursor       = LoadCursor(0, IDC_ARROW);
 wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 wc.lpszMenuName  = 0;
 wc.lpszClassName = "Direct3D9"; 

然后接着创建一个窗口 

  HWND hwnd = 0;
 hwnd = ::CreateWindow("Direct3D9", "Direct3D9",
  WS_OVERLAPPEDWINDOW,
  0, 0, width, height,
  0, 0 /, hInstance, 0 );

显示窗口。更新窗口 

 ::ShowWindow(hwnd, SW_SHOW);
 ::UpdateWindow(hwnd); 

接着取得硬件关联 

D3DPRESENT_PARAMETERS d3dpp;
 d3dpp.BackBufferWidth            = width;
 d3dpp.BackBufferHeight           = height;
 d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;
 d3dpp.BackBufferCount            = 1;
 d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;
 d3dpp.MultiSampleQuality         = 0;
 d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD;
 d3dpp.hDeviceWindow              = hwnd;
 d3dpp.Windowed                   = true;
 d3dpp.EnableAutoDepthStencil     = true;
 d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;
 d3dpp.Flags                      = 0;
 d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
 d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;

 

最后就是一个取得设备相关。这好象是D3DX一个顺序,这只是我复习的一个方法,一点技术含量都没有。 

只是在我的脑中过了一次电影一样,不过我还是想提出几个问题。以待我以后水平提高的时候再来解答我现在 

心里想不明的疑团: 

我要做的一个3D显示视频和声音,图片系统,到现在我还没有确定我的目的和方向是什么。 

现在想不明白的,有高人看了就帮我解决一下,本人感激不尽 

1。为什么DX9不支持DX8了? 

找了相关资料,就是说如果要运行DX8的例子。就要 

安装DX8.0 SDK,这是我不想要的,因为我想向一个新的方面发展。再装一个DX 8.0 

也没有必要。 

2。读3DMAX 的3DS文件,以前好象一个工具可以转为.X文件的。可是现在不记得怎么转换了。 

.我实现的功能是读取3DS文件,还有视频文件,还有图片。很多功能要我写出来,我看要学一段时 

间。我才能明白之间的道理。 

表面来看。有一个全屏的功能是我现在第一件事要做的。下一步还是从最简单的开始, 

在全屏中显示“Hello .world”这可是世上最经典的语句了。 

有点困了,休息2个小时后再起来玩一下吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值