【发布时间】:2014-01-23 02:35:14
【问题描述】:
我正在创建一个类,其中一个值是它所组成的所有顶点(它是一个 3d 程序)。我也想要一个默认的顶点数组(因为要输入的顶点很大),我想要这样做的方法是定义顶点数组:
Entity::vertices[] = {
{ -0.5f, 0.5f, 0.0f, { 0.0f, 0.0f, 0.0f, 0.0f } },
{ 0.5f, 0.5f, 0.0f, { 0.0f, 0.0f, 0.0f, 0.0f } },
{ 0.5f, -0.5f, 0.0f, { 0.0f, 0.0f, 0.0f, 0.0f } },
{ 0.5f, -0.5f, 0.0f, { 0.0f, 0.0f, 0.0f, 0.0f } },
{ -0.5f, -0.5f, 0.0f, { 0.0f, 0.0f, 0.0f, 0.0f } },
{ -0.5f, 0.5f, 0.0f, { 0.0f, 0.0f, 0.0f, 0.0f } }
};
然后在类的构造函数中检查是否输入了自定义顶点,如果输入了,则将顶点数组作为输入数组。
有复制数组功能吗?
如果没有怎么清除数组(会清除现有的默认顶点,因为如果输入的顶点小于默认我会有额外的顶点,这对渲染不利)?
【问题讨论】:
-
std::vector 有问题吗?
-
@uberwulu 它不保存颜色数据(除非它保存?),这在渲染某些东西时很重要。
-
std::vectors 是模板化的。它们可以保存您创建的任何顶点结构,无论您的顶点是否包含颜色数据。它还有一个 clear() 函数。
-
一个 std::vector 可以保存你想给它的任何类型的数据,但如果你有固定数量的数据,一个 std::array 可能就是你要找的。如果您真的必须自制数组,最好编写自己的副本和清除函数并将其全部封装在一个类中。但是你真的应该研究一下 STL 和 std 算法。