我尝试使用png或jpg文件创建高度图。它的工作效率也高达75%,但我无法解决最后的25个......
这是地图的图片为png
这是生成的高度图/地形
如你所见,符号开始重复,我不知道为什么。
代码:
auto image = IMG_Load(path.c_str());
int lineOffSet = i*(image->pitch/4);
uint32 pixel = static_cast<uint32*>(image->pixels)[lineOffSet + j];
uint8 r, g ,b;
SDL_GetRGB(pixel,image->format,&r, &g, &b);
我尝试了什么:
顶点数是正确的(256x256)。
int lineOffSet = i*(image->pitch/4);
4表示每个像素的字节数,在这种情况下应该是3但是我得到一个完全不同的地形(音高是768)。 i和j的范围从0到255。
我希望有人提示要解决这个问题
答案 0 :(得分:0)
我认为您计算所需像素的地址错误。您假设一个像素的大小为4个字节。直接以字节为单位计算地址然后转换为uint32
通常更可靠。试试这个:
uint32 pixel = *static_cast<uint32*>(image->pixels +
image->pitch * i +
image->format->BytesPerPixel * j);