gpt4 book ai didi

c++ - glDrawPixels 访问违规读取位置

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:12 24 4
gpt4 key购买 nike

我正在尝试使用 OpenGL 函数 glDrawPixels() 渲染体积数据

#define SIZE    480
unsigned int rgbPixels[SIZE][SIZE]
...
glDrawPixels(SIZE, SIZE, GL_RGB, GL_UNSIGNED_INT, rgbPixels);

如果我执行 sizeof(rgbpixels),它会返回 921600,也就是 480*480*4。

我试过 GL_RGBA 但效果不佳。最后,我在屏幕上看到了一些东西,而没有使用 glDrawPixels(SIZE, SIZE*0.81, GL_RGB, GL_UNSIGNED_INT, rgbPixels);

但这不是我预期的输出。那么在这种情况下有人可以帮助我吗?

最佳答案

你告诉 glDrawPixels 你的数据是 SIZExSIZE 像素,每个像素有 3 个 32 位无符号整数类型的分量 (GL_RGB) 每个(GL_UNSIGNED_INT)。如果 rgbPixels 不是这种情况(当您说它只是 SIZE*SIZE*4 而不是所需的 SIZE*SIZE*3 时可能不是*4),那么这可能会导致访问冲突或其他未定义的行为。

当您说您的 rgbPixels 的大小为 SIZE*SIZE*4 时,我猜每个像素包含 4 个字节,每个字节都是一个颜色分量。如果是这种情况你需要

glDrawPixels(SIZE, SIZE, GL_RGBA, GL_UNSIGNED_BYTE, rgbPixels);

请始终记住,glDrawPixels 的所有参数都会告诉 OpenGL 指针参数 (rgbPixels) 使用了多少内存以及它的布局格式。所以那些当然必须匹配 rgbPixels 包含(或指向)的实际内存。

关于c++ - glDrawPixels 访问违规读取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16610870/

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