将Heightmap读取为unsigned char数组

时间:2016-11-28 08:49:04

标签: c++ opengl rendering heightmap

我正在使用stbi_image库来加载图片。我有一个JPG,它被加载到具有给定宽度和高度的unsigned char *(#components = 3,每个都有8位)。为了重建高度值,我猜测我必须将每个组件重新组装到他们的位置:

height_map_data = stbi_load(heightmap_path, &width, &height, &comp, 1);
    if(height_map_data != nullptr)
    {
        unsigned char* current_head = height_map_data;
        unsigned int r, g, b, a;
        for(int i = 0; i < height; ++i)
        {
            for(int j = 0; j < width; ++j)
            {
                //???? get height ????
                //assume comp == 3, img is in rgb, 8bpp
                unsigned int pix = current_head[0] << 16 | current_head[1] << 8 | current_head[2];
                float h = pix / (256.f * 256 * 256); //is this right??
                current_head += comp;
            }
        }
    }

这是jpg图片: enter image description here

那么如何从图像中正确解开高度?这个图像有不同的RGB数字,所以我猜测它不是8位灰度,所以我不认为我可以使用其中一个组件。

0 个答案:

没有答案