1

我正在尝试创建一个由块组成的小“世界”,类似于体素引擎,但有点不同。

为此,我考虑创建一个类,比如说Block,它有一个方法draw()。让我们把 a 想象Block成一个长方体。然后我可以Block通过它的长度、宽度、高度来表征每一个,并通过模型矩阵为一个固定的顶点数组(即以原点为中心的单位立方体)缩放它来绘制它。

GLfloat我的问题是:声明这个由 8 个类型的顶点(即 24GLfloat个条目)组成的数组的最佳方法是什么。由于我可能有很多块,我希望数组只保存一次,并且每个实例Block都应使用这个确切的数组,而不是随身携带每个Block. 实现这一目标的最佳方法是什么?由于我对此很陌生,因此我无法真正理解是否staticconst(或两者兼而有之?)在这里会有所帮助。我想过做

const GLfloat unit_cube_vertices = { ... };

class Block
{ ... };

有更好/规范的方法吗?

4

2 回答 2

2

如果该数组仅由您的班级使用(或与班级有关),我会将其声明为班级的一部分(注意这里的静态意味着只有一个副本),即

class Block {
public:  // or private if not used anywhere else
    static const GLfloat unit_cube_vertices[24];
};

如果要在全球范围内使用,请按照您声明的方式保留它。

于 2013-08-14T12:07:53.160 回答
1

这个问题似乎与静态/常量没有太大关系。这两个关键字只是告诉 C++ 如何访问存储,以及它应该在哪里可见。你在做什么完全没问题。

const意味着不能再更改变量。在极少数情况下,如果编译器知道值不会改变,它可以优化您的代码。

static指的是对象在不同编译单元中的可见性(~项目中的不同文件)。static在其他编译单元中不会看到带有链接的变量。

于 2013-08-14T12:03:13.483 回答