使用OpenGL读取图像字节数组

发布于 2024-12-03 07:42:18 字数 169 浏览 1 评论 0原文

我有一个位图图像,当前表示为字节数组(可以是 YCrCb 或 RGB)。 OpenGL 中是否有一个内置函数可以让我查看该字节数组中的各个像素?

我知道有 glReadPixels 函数,但如果我已经获得了数据,我不需要从帧缓冲区读取。

如果没有,是否有其他方法可以在 C++ 中执行此操作?

I have a bitmap image that is currently represented as a byte array (could be YCrCb or RGB). Is there a function build in to OpenGL that will allow me to looks at individual pixels from this byte array?

I know that there is the function glReadPixels but I don't need to be reading from the frame buffer if I've already got the data.

If not, is there an alternative way to do this in C++?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌能量女王 2024-12-10 07:42:18

OpenGL 是一个绘图 API,而不是某种通用图形库 - OpenGL 中的“L”意味着应该被解读为图层,而不是库。

话虽这么说:如果您知道字节数组的尺寸和数据布局,那么获取单个像素就很简单了。

pixel_at(x,y) = data_byte_array[row_stride * y + pixel_stride * x]

以紧凑的格式

pixel_stride = bytes_per_pixel
row_stride = width * pixel_stride

OpenGL is a drawing API, not some kind of all purpose graphics library – The 'L' in OpenGL means should be read as Layer, not library.

That being said: If you know the dimensions of the byte array, and the data layout, then it is trivial to fetch individual pixels.

pixel_at(x,y) = data_byte_array[row_stride * y + pixel_stride * x]

in a tightly packed format

pixel_stride = bytes_per_pixel
row_stride = width * pixel_stride
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文