Как прочитать значения карты высот, чтобы создать ландшафт?

Я пытаюсь сделать ландшафт, используя изображение карты высот в OpenGL. В качестве эксперимента я использую изображение 4х4 пикселей. это увеличенный снимок экрана. так что вы можете увидеть пиксели.

Это часть моего кода.

ILubyte * image = ilGetData();

int bpp =  ilGetInteger(IL_IMAGE_BPP);
std::cout << "BPP = " << bpp << std::endl;

for (int z=0; z < terrainHeight; ++z)
{
    for (int x=0; x < terrainWidth; ++x)
    {
        pVertices[z*terrainWidth+x] = NxVec3(NxF32(x),
            NxF32(image[z*terrainWidth+x]*bpp), NxF32(z));
    }
}

for (int i=0; i < vertexCount; ++i)
{
    std::cout << "x = " << pVertices[i].x << "\t y = " 
            << pVertices[i].y << "\t z = " << pVertices[i].z << std::endl;
}

Затем я получаю следующий результат.

Я ожидаю нулевые значения (для y-координаты) для (0,0), (1,1), (2,2) и (3,3). но результат другой. почему я не получаю ожидаемых результатов?

1 ответ

Решение

Я думаю, что это должно быть image[(z*terrainWidth+x)*bpp] вместо image[z*terrainWidth+x]*bpp,

Другие вопросы по тегам