|
楼主 |
发表于 2018-6-7 21:10:12
|
显示全部楼层
湖北省武汉市
这个是D3DWnd.cpp
#include "stdafx.h"
#include "D3Ddemo1.h"
#include "D3DWnd.h"
// CD3DWnd
IMPLEMENT_DYNAMIC(CD3DWnd, CWnd)
CD3DWnd::CD3DWnd()
{
}
CD3DWnd::~CD3DWnd()
{
}
BEGIN_MESSAGE_MAP(CD3DWnd, CWnd)
END_MESSAGE_MAP()
void CD3DWnd::InitD3D(){
m_pD3D=Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpp;
hr = m_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &displayMode );
::ZeroMemory(&d3dpp,sizeof(d3dpp));
d3dpp.Windowed=true;//创建Direct3D程序
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat= D3DFMT_X8R8G8B8;
d3dpp.EnableAutoDepthStencil= TRUE;
d3dpp.AutoDepthStencilFormat= D3DFMT_D16;
m_pD3D->CreateDevice(
D3DADAPTER_DEFAULT,//使用缺省的显卡
D3DDEVTYPE_HAL,//指定设备类型为Hal
m_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,//软件顶点处理
&d3dpp,&m_pDevice);//因为使用顶点颜色渲染,所以要进行光照处理
class IDirect3DDevice9{
int SetRenderState();
}
//IDirect3DDevice9::SetRenderState;
m_pDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
m_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE) ;//不剔除任何面
m_pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE );}//关闭挑选功能,允许渲染背面}
// CD3DWnd 消息处理程序
D3DWnd.h
#pragma once
#include <d3d9.h>
// CD3DWnd
class CD3DWnd : public CWnd
{
DECLARE_DYNAMIC(CD3DWnd)
public:
CD3DWnd();
virtual ~CD3DWnd();
void InitD3D();
protected:
LPDIRECT3D9 m_pD3D;//D3D对象接口指针
LPDIRECT3DVERTEXBUFFER9 m_pDevice;//设备对象指针
DECLARE_MESSAGE_MAP()
};
|
|