0

我正在尝试使用 OpenGL 中的高度图图像制作地形。作为实验,我使用 4x4 像素图像。这是放大的屏幕截图。所以你可以看到像素。

在此处输入图像描述

这是我的代码的一部分。

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;
}

然后,我得到以下结果。

在此处输入图像描述

我期待(0,0),(1,1),(2,2)和(3,3)的零值(对于y坐标)。但结果不同。为什么我没有得到预期的结果?

4

1 回答 1

2

我认为应该image[(z*terrainWidth+x)*bpp]代替image[z*terrainWidth+x]*bpp.

于 2012-05-11T17:59:21.650 回答