Opengl 不重复读取SDL2纹理

Opengl 不重复读取SDL2纹理,opengl,sdl-2,Opengl,Sdl 2,我尝试用png或jpg文件创建heightmap。它的效率太高了75%,但我无法解决最后25个 这是一张png地图的图片 这是生成的高度贴图/地形 正如你所看到的,符号开始重复,我不知道为什么 守则: auto image = IMG_Load(path.c_str()); int lineOffSet = i*(image->pitch/4); uint32 pixel = static_cast<uint32*>(image->pixels)[lineOffSet

我尝试用png或jpg文件创建heightmap。它的效率太高了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);
4表示每像素字节数,在本例中应为3,但我得到的地形完全不同(间距为768)。i和j的范围为0-255


我希望有人能给我一个提示来解决这个问题

我想你计算所需像素的地址时出错了。假设一个像素的大小为4字节。通常更可靠的方法是直接以字节为单位计算地址,然后转换到
uint32
。试试这个:

uint32 pixel = *static_cast<uint32*>(image->pixels +
                                     image->pitch * i +
                                     image->format->BytesPerPixel * j);
uint32像素=*静态投影(图像->像素)+
图像->音高*i+
图像->格式->字节/像素*j);
uint32 pixel = *static_cast<uint32*>(image->pixels +
                                     image->pitch * i +
                                     image->format->BytesPerPixel * j);