如何使用DirectX制作RPG游戏(一)开发环境搭建

2025-09-24 05:55:45

1、安装visual studio 2017 ,可参考链接,请确保勾选c/c++桌面应用程序开发工具。

2如何安装和更新Visual Studio 2017社区版

2、下载directx SDK,本文下载的是2010 June版本,已经默认集成了direct9/10/11 ,开发directx程序就够了。

如何使用DirectX制作RPG游戏(一)开发环境搭建

3、学习DirectX开发,所需要的基本知识。

1)c/c++编程知识,不需要精通,但需要经常实践,想写出一流的程序,需要长期不断的学习

2)学习DirectX 3D开发还必须学习和掌握一些数学知识。 如,掌握向量几何和向量代数,以及它们在3D计算机图形学中的应用, 掌握矩阵,矩阵代数,以及如何借助矩阵进行3D几何变换,掌握用代数对平面和射线建模的方法,熟悉D3DX库中专门用于进行3D数学运算的部分类和函数。

4、使用Visual Studio VC++向导创建Window桌面工程。加入DirectX3D 头文件和库文件到工程中,在必要的地方加入Direct3D 初始化代码和渲染函数。

一般是在创建windows窗口后初始化Direct3D,在消息循环中加入渲染绘制函数。

如何使用DirectX制作RPG游戏(一)开发环境搭建

如何使用DirectX制作RPG游戏(一)开发环境搭建

1、获取接口IDirect3D9的指针。该接口用于获取系统中物理硬件设备的信息并创建接口IDirect3DDevice9,该接口是一个C++对象,代表了我们用来显示3D图形的物理硬件设备。

IDirect3D9* d3d9=0;

d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

2、检查设备性能(D3DCAPS9),判断主显卡(primary display adapter 或primary graphics card)是否支持硬件顶点运算。为了创建接口IDirect3DDevice9,我们必须明确显卡是否支持该功能。

D3DCAPS9 caps;

 d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);

 int vp = 0;

 if (caps.DevCaps& D3DDEVCAPS_HWTRANSFORMANDLIGHT)

 {

  vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;

 }

 else

  vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

3、初始化D3DPRESENT_PARAMETERS结构的一个实例。该结构由许多数据成员组成,我们可以通过这些变量来指定即将创建的接口IDirect3DDevice9的特性。

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;

4、利用已初始化的D3DPRESENT_PARAMETERS结构创建IDirect3DDevice9对象(一个C++对象,代表了我们用来显示3D图形的物理硬件设备)。

HRESULT hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING,  &d3dpp, device);

 if (FAILED(hr))

 {

  ::MessageBox(0, L"CreateDevice()-Failed", 0, 0);

  return false;

 }

5、添加渲染函数,所有的绘制方法都必须在IDirect3DDevice9::BeginScene 和IDirect3DDevicer9::EndScene构成的方法对之间进行调用,如

_device->BeginScene();

  _device->DrawPrimiteive(...);

_device->EndScene(); 示例代码为:

device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);

  device->BeginScene();

  device->SetFVF(ColorVertex::FVF);

  device->SetStreamSource(0, triangle, 0, sizeof(ColorVertex));

  D3DXMatrixTranslation(&world, -0.25f, 0.0f, 0.0f);

  device->SetTransform(D3DTS_WORLD, &world);

  device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);

  device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

  D3DXMatrixTranslation(&world, 0.25f, 0.0f, 0.0f);

  device->SetTransform(D3DTS_WORLD, &world);

  device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);

  device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

  device->EndScene();

  device->Present(0, 0, 0, 0);

如何使用DirectX制作RPG游戏(一)开发环境搭建

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:95
  • 阅读量:81
  • 阅读量:64
  • 阅读量:45
  • 阅读量:28
  • 猜你喜欢