在glew init完成之后,在调用任何其他GL命令之前调用glGetError时,我得到了GL_INVALID_ENUM代码。我正在设置OpenGL 4.2内核,向前兼容。使用GLFW作为窗口/输入,GLEW作为gl上下文,所有这些都在64位Windows 7上运行。我的图形卡是GeForce 550GT,它有OpenGL 4.2的最新驱动程序。另一件奇怪的事是,我用的是GLDrawerElements(),效果很好。但后来我尝试了glDrawArrays(),这是我完成某项特定任务所需要的,但它根本不起作用。我重新检查了所有的gl语法、缓冲区创建着色器等,什么都没有。调用glDrawArrays()时,我确实得到了GL_无效的_操作,我不知道为什么。所有这些工作都是一个迷你渲染引擎,但目前管道非常简单,所以我不明白会出现什么问题。以下是我如何初始化上下文和窗口:
void Engine::InitWithGLFW(){
if(!glfwInit()){
exit(EXIT_FAILURE);
}
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 4);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_FSAA_SAMPLES,0);
glfwDisable( GLFW_AUTO_POLL_EVENTS );
#ifdef DEBUG
glfwOpenWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
#endif
if(!glfwOpenWindow(_width,_height,8, 8, 8, 8, 24, 8,GLFW_WINDOW)){
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwSetWindowTitle("XDEngine V-1.0");
InitGlew();
}
void Engine::InitGlew(){
glewExperimental=GL_TRUE;
GLenum err = glewInit();
if (GLEW_OK != err)
{
/* Problem: glewInit failed, something is seriously wrong. */
fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
}
fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
glEnable(GL_MULTISAMPLE);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_DEPTH_TEST);
glDepthMask(true);
glDepthFunc(GL_LEQUAL);
glDepthRange(0.0f, 1.0f);
glEnable(GL_DEPTH_CLAMP);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glfwSetWindowSizeCallback(Reshape);
}
这是glDrawArrays()的渲染循环:
void Draw(){
_material->Draw();///activate shader program
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
_material->PostDraw(); //deactivate shader program
}
正如我所说,所有缓冲区和着色器程序都已初始化ok。更新:好的,我找到了第一个问题的答案:
GlewInit之后可能会出现GL_INVALID_ENUM,它不应该影响渲染。所以我只剩下第二个问题。。。
在用VBO调用glDrawArrays()时,我发现了GL_INVALID_ENUM的解决方法。如果我将VBO打包到VAO中,错误就会消失,渲染也可以正常工作。这是否意味着在正向兼容的核心配置文件中,我们不能直接使用VBO绘制?从未在官方文件中看到任何与之相关的东西。
顶点阵列对象在核心轮廓中不是可选的。GL_INVALID_ENUM
错误可能来自其他地方;你应该得到GL\u无效\u操作
。请记住:OpenGL错误是缓冲的,所以您必须继续获取GL错误,直到您返回GL_NO_ERROR
。
GlfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);
请停止这样做。在核心配置文件中,前向兼容性实际上毫无意义。
我试图在Python中初始化火花上下文变量。 但我得到了以下错误: py4j。协议Py4JJavaError:调用None时出错。组织。阿帕奇。火花应用程序编程接口。JAVAJavaSparkContext.:JAVAlang.NoClassDefFoundError:无法初始化类组织。阿帕奇。火花内部的配置。组织上的包$ 。阿帕奇。火花斯帕克孔夫。在组织上验证设置(SparkConf.scala
所以我想用java编写一个Tic-Tac-Toe游戏。 现在点击一个按钮,我想把按钮的图像设置为“十字”或“圆圈”,但是一旦一个类型跟随代码,按钮就会消失,直到我悬停在它们上面,然后它们就会返回。 没有上面的代码会是什么样子 这里的项目结构
我正在尝试使用spark submit server2运行spark程序。py——主本地[2]。然后我得到了这个错误: 以下是我正在运行的代码: 谁能帮我一下我做错了什么。我试过这篇文章中的解决方案无法初始化spark上下文,但它不起作用。
我已经按照下面的描述设置了集群: https://spark.apache.org/docs/latest/running-on-kubernetes.html kubernetes客户端似乎无法与API通信?我想弄明白为什么。 还有什么想法可以尝试调试这个问题吗?
我试图在Windows 8.1上运行Apache Spark调用Spark shell命令时,得到以下堆栈: 系统变量配置如下: HADOOP\u主页: c: \ hadoop JAVA_HOME: C: \Java\jdk1.8.0\u 162 SCALA_HOME: C: \斯卡拉 SPARK\u主页: C: \ spark\spark-2.3.0-bin-hadoop2.7 路径: %JAV