【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 1808|回复: 1

[求助]矩阵计算和渲染API应该分离吗??

[复制链接]
发表于 2009-3-11 17:40:16 | 显示全部楼层 |阅读模式

先来看一个函数:

struct stuRotateZoom
{
      float RotateX;
      float RotateY;
      float RotateZ;
      float ZoomX;
      float ZoomY;
      float ZoomZ;
};


void CDXFont:raw3DFont(unsigned int iNum,RECT* rctDraw,stuRotateZoom* Rotate) 

          if ( iNum>m_vtr3DFont.size()-1 ) 
          { 
                return; 
          } 
 
          //Rotate Matrix ,use " m_fRotateY,m_fRotateX,m_fRotateZ" to choose the Rotate mode and speed 
          D3DXMatrixRotationYawPitchRoll(&matRotate,Rotate->RotateY,Rotate->RotateX,Rotate->RotateZ); 

          //Translation Matrix
          D3DXMatrixTranslation( &matTrans,-m_vtr3DFont[iNum].iCenterX,-m_vtr3DFont[iNum].iCenterY,0); 
 
          //Zoom Matrix 
          D3DXMatrixScaling( &matZoom, Rotate->ZoomX,Rotate->ZoomY,Rotate->ZoomZ); 
 
          //Multiply Matrixs above
          D3DXMatrixMultiply( &matWorld, &matTrans,&matRotate);
          D3DXMatrixMultiply( &matWorld, &matWorld,&matZoom); 

          //一直到这里都是在计算矩阵

          //这里才开始真正的渲染
          m_lpD3DDevice->SetTransform( D3DTS_WORLD, &matWorld ); m_lpD3DDevice->SetMaterial(&m_vtr3DFont[iNum].Font3Dmtrl); 
          m_vtr3DFont[iNum].mesh->DrawSubset(0);
}

 

正如大家所见,很多封装 DirectX 的类里面,都有这样的函数,里面大概有两部分:

1.计算矩阵

2.设置矩阵,并使用 DirectX API 渲染

 

我现在的问题是:

1.是否应该把第一部分,也就是计算矩阵的部分,剥离出去

2.如果剥离出去,那这个函数的参数应该怎么设计

发表于 2009-3-12 13:45:22 | 显示全部楼层

可以剥离呀~

不过大多数的矩阵是为了改变世界中的模型,所以要不断更新

例题代码里面又没有专门的逻辑更新的函数,所以就放在一起了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 09:47

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表