资源简介

《Visual C++ OpenGL DirectX三维动画编程宝典》书籍附带的源代码。

资源截图

代码片段和文件信息


//下面是程序所需要的include文件,第一个include是视窗所必须的,
//第二个是Direct3D 8所必须的。
#include 
#include 
#include 

HWND hWnd;
HDC hDC;
HINSTANCE hInstance; //得到程序的例子

LPDIRECT3D8 P_D3D;
LPDIRECT3DDEVICE8 p_D3DDevice;

RECT rect;

int sw = 640;
int sh = 480;

bool fullscreen  = 1;

//一个用来定义顶点的宏‘macro‘
#define D3D8T_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

//顶点缓冲区是用优化方法渲染存储的顶点的一种方法
IDirect3DVertexBuffer8 *g_triangle=NULL;
IDirect3DVertexBuffer8 *g_square=NULL;

// 程序链接时加入d3d8.lib
#pragma comment(lib“d3d8.lib“)
#pragma comment(lib“d3dx8.lib“)

int D3DInit()
{
   return 1;
}

D3DFORMAT find_16bit_mode(void){
HRESULT hr;

   //首先测试(16位色模式)R5G6B5
   hr=P_D3D->CheckDeviceType(D3DADAPTER_DEFAULTD3DDEVTYPE_HALD3DFMT_R5G6B5D3DFMT_R5G6B5FALSE);
   if(SUCCEEDED(hr)){
      OutputDebugString(“D3DFMT_R5G6B5\n“);
      return D3DFMT_R5G6B5;
   }

   //接下来测试X1R5G5B5
   hr=P_D3D->CheckDeviceType(D3DADAPTER_DEFAULTD3DDEVTYPE_HALD3DFMT_X1R5G5B5D3DFMT_X1R5G5B5FALSE);
   if(SUCCEEDED(hr)){
      OutputDebugString(“D3DFMT_X1R5G5B5\n“);
      return D3DFMT_X1R5G5B5;
   }

   return (D3DFORMAT)NULL;
}

int D3DEnable()
{
HRESULT hr;
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE display_mode;

   //创建Drect3D8,这是在任何D3D8程序里必须做的事情
   //返回D3D版本值(D3D_SDK_VERSION)
   P_D3D = Direct3DCreate8( D3D_SDK_VERSION );
 
   //仅运行在窗口模式,功能是得到当前(桌面)显示模式
   hr=P_D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT&display_mode);
  

   //将D3DPRESENT_PARAMETERS结构清零
   ZeroMemory(&d3dppsizeof(d3dpp));

   //在全屏和窗口方式下均相同
   d3dpp.SwapEffect     = D3DSWAPEFFECT_DISCARD; //由于不再有用,所以要释放以前的帧。
   d3dpp.hDeviceWindow  = hWnd;  //这是主窗口(唯一的)
   d3dpp.BackBufferCount= 1;  //仅需要一个备分缓冲区


   ////在全屏模式下要设置后备缓冲区的宽/高.
   if(fullscreen){
      d3dpp.Windowed          = FALSE;
      d3dpp.BackBufferWidth   = sw;
      d3dpp.BackBufferHeight  = sh;
      d3dpp.BackBufferFormat  = find_16bit_mode();
   }
   else
   {
      d3dpp.Windowed          = TRUE;
      d3dpp.BackBufferFormat  = display_mode.Format;
   }


   hr=P_D3D->CreateDevice(D3DADAPTER_DEFAULT //在多显示器系统中默认的接口
                          //可以超过一个。尽可能地选择硬件加速而不是软件渲染
                          D3DDEVTYPE_HAL
                          //当前的窗口
                          hWnd
                          //用软件处理矢量,要比硬件方式慢,但兼容所有图形卡
                          D3DCREATE_SOFTWARE_VERTEXPROCESSING
                          // D3DPRESENT_PARAMETERS结构
                          &d3dpp
                          //指向新的设备
                          &p_D3DDevice);
   if(!p_D3DDevice) return 1;
   else return 0;
  
}

void D3DDisable()
{
   if(p_D3DDevice){
      p_D3DDevice->Release();
      p_D3DDevice=NULL;
   }

   if(P_D3D){
      P_D3D->Release();
      P_D3D=NULL;
   }

}

void D3DSceneShow()
{

static unsigned char red=0green=0blue=0;



   //清除缓冲区并置为新的颜色
   srand( (unsigned)(time(NULL)));
   red=rand()%2

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2002-09-19 16:01  d3dlesson2a\
     文件        9887  2002-02-05 15:22  d3dlesson2a\d3dlesson2a.cpp
     文件        3978  2002-02-02 02:47  d3dlesson2a\d3dlesson2a.dsp
     文件         545  2002-02-01 00:19  d3dlesson2a\d3dlesson2a.dsw
     文件       45056  2002-02-05 17:05  d3dlesson2a\d3dlesson2a.exe
     文件       41984  2002-02-05 17:06  d3dlesson2a\d3dlesson2a.ncb
     文件       53760  2002-02-05 17:06  d3dlesson2a\d3dlesson2a.opt
     文件        1142  2002-02-05 17:05  d3dlesson2a\d3dlesson2a.plg
     目录           0  2002-09-19 16:01  d3dlesson2b\
     文件        9338  2002-02-05 15:23  d3dlesson2b\d3dlesson2b.cpp
     文件        3978  2002-02-02 03:36  d3dlesson2b\d3dlesson2b.dsp
     文件         545  2002-02-01 00:19  d3dlesson2b\d3dlesson2b.dsw
     文件       49152  2002-02-05 17:06  d3dlesson2b\d3dlesson2b.exe
     文件       41984  2002-02-05 17:06  d3dlesson2b\d3dlesson2b.ncb
     文件       53760  2002-02-05 17:06  d3dlesson2b\d3dlesson2b.opt
     文件        1142  2002-02-05 17:06  d3dlesson2b\d3dlesson2b.plg
     目录           0  2002-09-19 16:01  d3dlesson3\
     文件        9332  2002-02-05 15:30  d3dlesson3\d3dlesson3.cpp
     文件        3966  2002-02-02 03:43  d3dlesson3\d3dlesson3.dsp
     文件         543  2002-02-01 00:19  d3dlesson3\d3dlesson3.dsw
     文件       49152  2002-02-05 17:07  d3dlesson3\d3dlesson3.exe
     文件       41984  2002-02-05 17:07  d3dlesson3\d3dlesson3.ncb
     文件       53760  2002-02-05 17:07  d3dlesson3\d3dlesson3.opt
     文件        1137  2002-02-05 17:07  d3dlesson3\d3dlesson3.plg
     目录           0  2002-09-19 16:01  d3dlesson4\
     文件       10133  2002-02-05 17:08  d3dlesson4\d3dlesson4.cpp
     文件        3966  2002-02-02 04:18  d3dlesson4\d3dlesson4.dsp
     文件         543  2002-02-02 03:44  d3dlesson4\d3dlesson4.dsw
     文件       49152  2002-02-05 17:08  d3dlesson4\d3dlesson4.exe
     文件       50176  2002-02-05 17:08  d3dlesson4\d3dlesson4.ncb
     文件       54784  2002-02-05 17:08  d3dlesson4\d3dlesson4.opt
............此处省略140个文件信息

评论

共有 条评论