从我所读到的,我应该尽可能使用前瞻声明.我有这样的类(由于前向声明,每个字段都是指针):
class A
{
// ...
A* a;
B* b;
C* c;
D* d;
E* e;
};
Run Code Online (Sandbox Code Playgroud)
但是存在问题.
1 - 这意味着调用new和delete(或至少与全新智能指针),用于构造每一个领域,而堆栈中分配领域不需要这个.
2-我读过堆栈分配比堆分配快.
3-这也意味着几乎每个类的每个字段都应该是指针.
我是否以正确的方式做我的示例类?或者我错过了有关前瞻性声明的内容?
我有一个包含std :: string的Text类.一个方法SetText如下:
void Text::SetText( const std::string& str )
{
m_str = str;
}
Run Code Online (Sandbox Code Playgroud)
因为这个方法几乎总是以rvalues作为参数调用,所以我想到了移动构造函数.我理解基础知识,但这就是全部.所以我做了测试并得出结论,像这样的另一个函数会更好,一旦定义了移动构造函数和移动分配,就可以获得性能提升:
void Text::SetText( std::string&& str )
{
m_str = move( str );
}
Run Code Online (Sandbox Code Playgroud)
有我的问题:
谢谢.
我迷失了骨骼动画.我已经读过一些有关这方面的事情,但他们仍然是我不明白的一件事.这是我的结论.我看到了3种使用骨骼为网格设置动画的方法:
我有一个Mesh类,它包含顶点,顶点缓冲区,索引缓冲区和纹理着色器,以及变换矩阵.我可以为每个骨骼使用类,增加重量,我可以轻松地为模型设置动画.但这意味着使用太多的内存,因为存储的某些内容在必须只使用一次时会被使用.
使用顶点着色器.在输入顶点参数中添加权重和骨骼索引,并使用矩阵数组作为全局变量,因此在着色器中我只需要使用骨骼矩阵.这个解决方案似乎对我来说效率更高,但我记得在directx 11教程(来自Rastertek)中他说HLSL应该很快,因为它使用了很多时间,而且我认为这太重了.无论如何这是我会尝试的解决方案,至少知道它是否有效.
为每个骨骼使用矩阵和逆矩阵.至于阅读,这是采取的方式.但这是我不理解的方式.为什么这里使用矩阵求逆,以及矩阵如何"链接"到顶点.我的意思是如果我移动右手骨骼的矩阵,代码中说什么只会使用右手顶点?
所以我的问题是:
我希望你能理解我,因为我不确定我解释得好.请原谅我的英语,我尽我所能.提前致谢.