Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
Opengl glewinit()显然成功,但仍设置了错误标志_Opengl_Opencl_Glew - Fatal编程技术网

Opengl glewinit()显然成功,但仍设置了错误标志

Opengl glewinit()显然成功,但仍设置了错误标志,opengl,opencl,glew,Opengl,Opencl,Glew,我最近从Windows迁移到Linux(Debian,64位),并试图建立一个GPGPU开发环境并运行,因此我正在测试一个在Windows下工作的程序 编译和链接进行得很顺利,但当我运行程序时,会出现一些奇怪的错误。我正在使用glew和freeglut 第一段:仅限OpenGL i = 1; info = PROGRAM_NAME; glutInitContextVersion(4,2); glutInit(&i, &info); glutInitDisplayMode(GLUT

我最近从Windows迁移到Linux(Debian,64位),并试图建立一个GPGPU开发环境并运行,因此我正在测试一个在Windows下工作的程序

编译和链接进行得很顺利,但当我运行程序时,会出现一些奇怪的错误。我正在使用glew和freeglut

第一段:仅限OpenGL

i = 1;
info = PROGRAM_NAME;
glutInitContextVersion(4,2);
glutInit(&i, &info);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(W_SIZEX, W_SIZEY);
glutInitWindowPosition(W_POSX, W_POSY);
glutCreateWindow(info);
glClearColor(1.0,1.0,1.0,0);
/**/
printf("Before glewInit: %i\n", glGetError());
/**/    
printf("glewInit returns: %i\n", glewInit());
/**/
printf("After glewInit: %i\n", glGetError());
/**/
从中我得到以下输出:

Before glewInit: 0
glewInit returns: 0
After glewInit: 1280
这是一个无效的枚举错误。我不知道是什么原因造成的,但我怀疑这可能与我在程序执行后期遇到的下一个错误有关

第二个代码片段:OpenCL OpenGL interop

/* BUFFERS */
(*BFR).C[0] = clCreateBuffer(*CTX, CL_MEM_READ_WRITE, SD, 0, 0);
(*BFR).C[1] = clCreateBuffer(*CTX, CL_MEM_READ_WRITE, SD, 0, &i);
dcl(i);

glGenBuffers(2, (*BFR).G);

glBindBuffer(GL_ARRAY_BUFFER, (*BFR).G[0]);
glBufferData(GL_ARRAY_BUFFER, SI, 0, GL_DYNAMIC_DRAW);
(*BFR).D[0] = clCreateFromGLBuffer(*CTX, CL_MEM_WRITE_ONLY, (*BFR).G[0], &i);
dcl(i);
glBindBuffer(GL_ARRAY_BUFFER, 0);
这里,dcl(int)方法只是对CL错误代码进行解码。当我运行此命令时,我从clCreateFromGLBuffer()中得到一个CL_INVALID_GL_对象错误。但是,OpenGL在生成、绑定或解除绑定相关缓冲区方面没有问题。OpenCL上下文显然是有效的,在创建或查询时不会生成错误。在Windows 7 64位上的VS2010中,一切都可以正常工作

汇编详细信息

以下是相关信息,包括:

/* OPENGL */
#include "GL/glew.h"
#include "GL/freeglut.h"

/* OPENCL */
#include "CL/cl.h"
#include "CL/cl_gl.h"
我正在使用GCC和链接,如下所示:

gcc -w -I./include CLGL.c -o ~/Templates/GOL-CLGL/run/a.out -lGLEW -lGLU -lglut -lGL -lOpenCL;
编译和链接不会导致错误(大量关于指针滥用的警告,但我怀疑这是罪魁祸首)


我目前没有办法调试这个。有人能提出进一步的建议吗?

我最近也遇到了这个问题,所以下面是答案:


所以你可以放弃这个错误。

明白了。因此,可能是其他原因导致了无效的\u GL\u对象错误。是的,这是另一个原因。我通常在GL API方法之间注入getError(),直到我确定错误的来源。试试看:)修复了问题!不确定是什么问题,但清除libopencl、fglrx和所有相关软件包,然后安装最新的AMD catalyst,然后使用AMD的脚本安装AMD应用程序SDK是可行的。在此之前,我从debian存储库安装了fglrx和libopencl。因此,对于它可能关心的人来说,不要管存储库,而是使用AMD的脚本进行安装。