用c ++和&amp ;;制作地形带返回2d数组

时间:2016-07-10 03:22:02

标签: c++ arrays

我在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

0 个答案:

没有答案