3D游戏引擎开发心得

接口,接口,好多的接口,我们玩的游戏都是接口...

 

IDIRECT3DDEVICE->SetSamplerRate( DWORD Sample, D3DSAMPLESTATETYPE Type, DWORD Value)是用来设定纹理过滤模式的,极品飞车十一图形选项中可以设置这一项,开成各向异性过滤效果会好一些,就是通过这个方法实现的。

 

打开灯光却没有SetMaterial(),世界将是黑暗的,即使开启了环境光照SetRenderState( D3DRS_AMBIENT, 0x00ffffff )也是如此。

 

肚饿,午饭去...

 

午饭完毕,最爱的茄子炒饭,不知道找工作做时还能不能这么舒心的吃上顿午饭...

 

// 今天起我会把这篇心得发在msdn上,那里高手众多,说不定能遇见高人指点一二

// 我的msdn用户名曰: id_winmain

 

下午开始

 

突然想起前两天犯的错误,ZeroMemory(), 你真重要:

D3DMATERIAL9  mtrl;

ZeroMemory( &mtrl, sizeof(D3DMATERIAL9) );

缺了它,将会得到一片花屏。

 

应该为每个渲染相关的类添加HRESULT Set_Render_State(); 共给d3d device丢失后的恢复操作使用。 

 

源代码文件越来越多了,窗口配置文件和错误打印文件夹杂在其中,好难看。是时候将他们放入单独的文件夹中了。一分钟,找了段代码,粘贴,修改,编译,运行,通过。互联网,真好用。代码如下,可惜原本规整的代码粘贴到此却如此凌乱,有需要者请行整理。

//---------------------------------------------------------------------------
// 函数: Create_Directory( const char *dir )
//
// 功能: 创建目录
//---------------------------------------------------------------------------
bool CIni::Create_Directory( const char *dir )
{
 vector<std::string>  path;  // 存放每一层目录字符串
 string   str_dir(dir);  // 存放要创建的目录字符串
    string   str_temp;   // 一个临时变量,存放目录字符串
    bool   b_success = false;  // 成功标志

 // 遍历要创建的字符串
    string::const_iterator  s_iter;  
    for( s_iter = str_dir.begin() ; s_iter!=str_dir.end() ; s_iter++ )
 {
        if (*s_iter  != '//')
  {  
   // 如果当前字符不是'//'
            str_temp += (*s_iter);
        }
  else
  { 
   // 如果当前字符是'//'将当前层的字符串添加到数组中
            path.push_back(str_temp); 
            str_temp += '//';
        }
    }

    // 遍历存放目录的数组,创建每层目录
    vector<std::string>::const_iterator  v_iter;
    for( v_iter = path.begin() ; v_iter!=path.end() ; v_iter++ )
 {
        // 如果CreateDirectory执行成功, 返回true, 否则返回false
        b_success = CreateDirectory(v_iter->c_str(), NULL) ? true : false;   
    }

    return b_success;

“对称编码很重要”,以前只是听过并以为自己理解了这句话,但是最近才突然发现,原来这句话是如此的重要。

LPDIRECT3DTEXTURE9  *mesh_texture;

mesh_texture     = new LPDIRECT3DTEXTURE9[num_mtrl];

......

......

if( mesh_texture )

{

  for(int i=0 ; i<num_mtrl ; i++)

  {

    SAFE_RELEASE(mesh_texture[i]);

  }

  delete[]  mesh_texture;

}

若不是对称编码,很有可能之后忘记了下半部分,引起内存泄露。

 

今天先写到这吧。刚自习回来,收获是对世界矩阵和物体旋转认识深刻了一点点。

开始实验......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值