GameEngine_D3D

#pragma once
#include "stdafx.h"
#include <d3d9.h>
#include <d3dx9.h>

#define SafeRelease(pObject) if(pObject!=NULL){pObject->Release();pObject=NULL;}

extern g_hWnd;

//3D的基类
class CGameEngine_D3D
{
public:
 
 IDirect3D9* IDirect3D ;
 IDirect3DDevice9* m_pIDirect3DDevice;
 IDirect3DVertexBuffer9* m_pVertexBuffer;
 IDirect3DIndexBuffer9* m_pIndexBuffer;
public:
 CGameEngine_D3D();
 ~CGameEngine_D3D();
    bool CreateD3Device(HWND hWnd,bool bFullScreen);
 virtual bool BufferSet();                                //定点缓冲区和定点索引缓冲区的建立
 virtual void SetWorldPosition(float x,float y,float z);   //世界矩阵的变换
 virtual void SetCamera();
 virtual void SetObjectMaterial(const D3DCOLORVALUE& dif,const D3DCOLORVALUE& amb,const D3DCOLORVALUE& spe,
                             const D3DCOLORVALUE& ami,float power );                                     //设置物体的材质
 virtual void ComputeTriNormal(const D3DXVECTOR3& V1,const D3DXVECTOR3& V2,const D3DXVECTOR3& V3,D3DVECTOR& normolVec); //计算法向量
 virtual void SetPointLight(D3DCOLORVALUE& dif,D3DCOLORVALUE& amb,D3DCOLORVALUE& spe,D3DVECTOR& pos);//设置摄影机的位置
 virtual void Render();
 void Release();
}; 

///

//

#include "stdafx.h"
#include "GameEngine_D3D.h"
CGameEngine_D3D::CGameEngine_D3D()
{
}

CGameEngine_D3D::~CGameEngine_D3D()
{
}
bool CGameEngine_D3D::CreateD3Device(HWND hWnd,bool bFullScreen)
{
 // Init D3D:
 //
   // D3DDEVTYPE deviceType;
 HRESULT hr = 0;

 // Step 1: Create the IDirect3D9 object.
  
    IDirect3D = Direct3DCreate9(D3D_SDK_VERSION);

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

 // Step 2: Check for hardware vp.

 D3DCAPS9 caps;
 IDirect3D->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);

 int vp = 0;
 if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
  vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
 else
  vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

 // Step 3: Fill out the D3DPRESENT_PARAMETERS structure.
 
 D3DPRESENT_PARAMETERS d3dpp;
 d3dpp.BackBufferWidth            = 800;
 d3dpp.BackBufferHeight           = 600;
 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;

 // Step 4: Create the device.

 hr = IDirect3D->CreateDevice(
  D3DADAPTER_DEFAULT, // primary adapter
  D3DDEVTYPE_HAL,         // device type
  hWnd,               // window associated with device
  vp,                 // vertex processing
     &d3dpp,             // present parameters
     &m_pIDirect3DDevice);            // return created device

 if( FAILED(hr) )
 {
  // try again using a 16-bit depth buffer
  d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
  
  hr = IDirect3D->CreateDevice(
   D3DADAPTER_DEFAULT,
   D3DDEVTYPE_HAL,
   hWnd,
   vp,
   &d3dpp,
   &m_pIDirect3DDevice);

  if( FAILED(hr) )
  {
   IDirect3D->Release(); // done with IDirect3D object
   MessageBox(0, "CreateDevice() - FAILED", 0, 0);
   return false;
  }
 }
 
 return true;
}


bool CGameEngine_D3D::BufferSet()
{
 return true;
}

void CGameEngine_D3D::SetWorldPosition(float x, float y, float z)
{
}

void CGameEngine_D3D::SetCamera()
{
}

void CGameEngine_D3D::ComputeTriNormal(const D3DXVECTOR3& V1,const D3DXVECTOR3& V2,const D3DXVECTOR3& V3,D3DVECTOR& normalVec)
{
 D3DXVECTOR3 tempV1=V1-V2;
 D3DXVECTOR3 tempV2=V1-V3;
 D3DXVECTOR3 tempNormalVec;
 D3DXVec3Cross(&tempNormalVec,&tempV1,&tempV2);
 D3DXVec3Normalize(&tempNormalVec,&tempNormalVec);
 normalVec=(D3DVECTOR)tempNormalVec;
}
void CGameEngine_D3D::SetPointLight(D3DCOLORVALUE& dif,D3DCOLORVALUE& amb,D3DCOLORVALUE& spe,D3DVECTOR& pos)
{
 
}

void CGameEngine_D3D::SetObjectMaterial(const D3DCOLORVALUE& dif,const D3DCOLORVALUE& amb,const D3DCOLORVALUE& spe,const D3DCOLORVALUE& emi,float power)
{
 D3DMATERIAL9 d3dMaterial;
 d3dMaterial.Diffuse=dif;
 d3dMaterial.Ambient=amb;
 d3dMaterial.Specular=spe;
 d3dMaterial.Emissive=emi;
 d3dMaterial.Power=power;
 m_pIDirect3DDevice->SetMaterial(&d3dMaterial);
}
//compute the

void CGameEngine_D3D::Render()
{
 
}

void CGameEngine_D3D::Release()
{
 
 SafeRelease(m_pIDirect3DDevice);
 SafeRelease(IDirect3D);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值