首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理HLSL效应

管理HLSL效应
EN

Stack Overflow用户
提问于 2013-02-17 20:25:20
回答 1查看 178关注 0票数 1

假设,对于这个例子,我有World类。World拥有Models的集合

代码语言:javascript
复制
class World
{
    public:
      map<string, Model*> Models;
};

模型将是应用程序中所有实体的抽象类,例如汽车、球、山或立方体。

问题是--管理这些模型的效果的最佳实践是什么。假设我有4个效果文件: base2.fx 1.fx、base2.fx 2.fx、base2.fx 3.fx、bas4.fx。它们都有类接口,可以绑定到模型( IBaseEffect1、IBaseEffect2、IBaseEffect3、IBaseEffect4 )。

现在,我是否应该认为每种模式都是独立的,并且应该这样做:

代码语言:javascript
复制
Cube1.Bind(IBaseEffect2);
Car.Bind(IBaseEffect3);

当模型具有管理效果的能力时,我会:

代码语言:javascript
复制
World::Render()
{
    foreach model -> Render();
}

这是我的引擎的实际解决方案。

或者更好的做法是独立地管理效果,并做一些类似的事情:

代码语言:javascript
复制
IBaseEffect1.SetAsActual();

foreach Model which should be considered for effect1 -> Render();

IBaseEffect2.SetAsActual();

foreach Model which should be considered for effect2 -> Render();

等等。

也许我的观点是错误的,应该用别的方式来表达吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 15:11:47

我认为你应该同时使用这两种方法。这就是:

  1. 每个模型都有自己的效果界限:model->Bind(effect);
  2. 您可以单独管理这些影响(出于效率原因):
    1. 根据它们使用的效果对模型进行排序
    2. 每种效果:
      • 设置效果
      • 呈现与当前效果关联的所有模型。

必须按固定顺序呈现的模型(例如透明对象)应以不同的方式处理,除非它们都具有相同的效果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14925688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档