gpt4 book ai didi

image - glTexImage2D 与宽度/高度相关的段错误

转载 作者:行者123 更新时间:2023-12-01 22:57:06 25 4
gpt4 key购买 nike

当我尝试加载 771x768 图像时出现段错误。

尝试使用 24x24 和 768x768 图像,它们可以正常工作,没有问题。

这是预期的吗?为什么它不会因 GL 错误而优雅地失败呢?

glTexImage2D 调用中发生段错误。我正在加载 PPM 二进制文件,因此它每像素打包为 24 位。这个奇数与奇数维度相结合可能会产生一个非 4 字节(甚至 2 字节)对齐的结构(并且引用我完全分配的缓冲区之外可能是错误的原因,但 gdb 没有向我显示内存地址(我可以用它来查明这是否是导致它的原因)。

glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, dataptr);
// in this specific case of failure, width = 771, height = 768,
// dataptr contains 1776384 bytes of binary RGB image data (771*768*3 = 1776384)

最佳答案

This odd number combined with an odd dimension probably produces a not-4-byte (or even 2-byte) aligned structure (and referencing outside of my exactly enough allocated buffer may be the cause of the error

这可能是原因。幸运的是,您可以设置 OpenGL 使用读取像素数据的对齐方式。在调用 glTexImage…(…) 之前执行

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);

关于image - glTexImage2D 与宽度/高度相关的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com