Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么glReadPixels似乎会返回垃圾?_Linux_Opengl_Egl - Fatal编程技术网

Linux 为什么glReadPixels似乎会返回垃圾?

Linux 为什么glReadPixels似乎会返回垃圾?,linux,opengl,egl,Linux,Opengl,Egl,我正试图用OpenGL在屏幕外画画。为此,我使用EGL初始化pbuffer曲面,然后绘制它,用glReadPixels读取结果。但是下面的程序在不同的(基于Mesa的Intel Linux)GPU上给了我垃圾。也就是说,在Atom N550上我得到了零,而在Xeon E3-1200 v3上我得到了70 00 07 44,而不是预期的40 80 bf ff 通过设置LIBGL\u ALWAYS\u SOFTWARE=1环境变量,我得到了预期的结果。另外,如果我用eglBindAPI注释掉这行,我在

我正试图用OpenGL在屏幕外画画。为此,我使用EGL初始化pbuffer曲面,然后绘制它,用
glReadPixels
读取结果。但是下面的程序在不同的(基于Mesa的Intel Linux)GPU上给了我垃圾。也就是说,在Atom N550上我得到了零,而在Xeon E3-1200 v3上我得到了
70 00 07 44
,而不是预期的
40 80 bf ff

通过设置
LIBGL\u ALWAYS\u SOFTWARE=1
环境变量,我得到了预期的结果。另外,如果我用
eglBindAPI
注释掉这行,我在
Xeon
上得到了很好的结果,但在Atom上仍然是零

以下是我的节目:

#包括
#包括
#包括
#包括
#包括
int eglPrintError(标准::字符串常量和上下文)
{
常量闪烁错误=eglGetError();

std::cerr看不出任何明显的错误。OpenGL通常对数据对齐非常挑剔,希望数据是4的好几倍。1x1帧缓冲区可能会触发驱动程序中的各种边缘条件。尝试使用8x8?@HughFisher我尝试过不同的大小。使用8x8以及我检查过的任何其他大小,我只得到sam的副本我的Linux笔记本电脑上也有垃圾(Broadwell HD 5500,Mesa 10.5.8)但如果我创建一个窗口表面而不是pbuffer,它就可以工作。由于pbuffer现在已被弃用,我怀疑是否有人会急于修复它。我看不出任何明显的错误。OpenGL经常对数据对齐非常挑剔,希望数据是4的好几倍。1x1帧缓冲区很可能会触发系统中的各种边缘条件驱动程序。尝试使用8x8?@HughFisher我尝试了不同的尺寸。使用8x8以及我检查的任何其他尺寸,我只会得到相同像素值的副本。我的Linux笔记本电脑(Broadwell HD 5500,Mesa 10.5.8)上也会有垃圾但如果我创建了一个窗口表面而不是一个pbuffer,它就可以工作了。由于pbuffer现在已经被弃用,我怀疑是否有人会急于修复它。