读取SDL2纹理而不重复

时间:2017-05-01 13:47:42

标签: opengl sdl-2

我尝试使用png或jpg文件创建高度图。它的工作效率也高达75%,但我无法解决最后的25个......

这是地图的图片为png

enter image description here

这是生成的高度图/地形

enter image description here

如你所见,符号开始重复,我不知道为什么。

代码:

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。

我希望有人提示要解决这个问题

1 个答案:

答案 0 :(得分:0)

我认为您计算所需像素的地址错误。您假设一个像素的大小为4个字节。直接以字节为单位计算地址然后转换为uint32通常更可靠。试试这个:

uint32 pixel = *static_cast<uint32*>(image->pixels +
                                     image->pitch * i +
                                     image->format->BytesPerPixel * j);