首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glDrawPixels访问冲突读取位置

glDrawPixels访问冲突读取位置
EN

Stack Overflow用户
提问于 2013-05-17 21:56:25
回答 2查看 404关注 0票数 2

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

代码语言:javascript
复制
#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);在没有访问冲突的情况下在屏幕上显示了一些内容

但这并不符合我的预期输出。那么,在这种情况下,有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-17 22:06:45

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

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

代码语言:javascript
复制
glDrawPixels(SIZE, SIZE, GL_RGBA, GL_UNSIGNED_BYTE, rgbPixels);

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

票数 4
EN

Stack Overflow用户

发布于 2013-05-17 22:06:26

给定的情况下,OpenGL将期望每个像素3个无符号整数!您可能希望使用GL_UNSIGNED_INT_8_8_8_8作为数据类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16610870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档