我在c ++中用opengl搞砸了,这是我第一次用c ++编写任何东西,所以我遇到了指针和数组的麻烦。我想创建一个函数来创建一个地形条带(由顶点数组表示,每个顶点是一个3个浮点数组)并返回它。然后可以使用gl三角形渲染该2d阵列(3个大小的阵列的未知大小的阵列)。我在呈现它时没有遇到任何麻烦,但是当我的代码当前运行时,当我将数组中顶点的值记录到函数的本地时,一切都很好,但在主要来源中,值不是&# 39; t正确记录。
TL; DR: 如何在c ++函数中生成数组数组。
现在我的职能是:
float** makeTerrainStrip(float tile, unsigned int tiles)
{
float** strip = new float*[(tiles + 1) * 2];
for (unsigned int i = 0; i < tiles; i++) {
float x = i * tile;
float y = 0;
float z1 = 0;
float z2 = tile;
float v1[3] = {x, y, z1};
float v2[3] = {x, y, z2};
strip[i * 2] = v1;
strip[i * 2 + 1] = v2;
}
std::cout << strip[0][0] << std::endl;
std::cout << strip[0][1] << std::endl;
std::cout << strip[0][2] << std::endl;
return strip;
}
并从主要来源调用它:
strip = makeTerrainStrip(1, 5); // strip is a global defined earlier
std::cout << strip[0][0] << std::endl;
std::cout << strip[0][1] << std::endl;
std::cout << strip[0][2] << std::endl;
这是输出:
// in the function
4
0
0
// in the main source
4
1.26749e+029
7987.1