2010-08-18 50 views
4

我对openGL和android开发都很陌生,所以请原谅我,如果我的问题很微不足道。为什么我会在“没有当前上下文的情况下调用OpenGL ES API”?

我正在尝试构建一个简单的小应用程序,该应用程序将三个EditText中的用户输入作为代表RGB颜色每个组件的0-100%值显示在GLSurfaceView中。

问题是,我需要使用openGL ES 2.0,我需要使用统一的值将数据传递到着色程序,以便一旦我得到它的工作,我可以继续我真正想要完成的工作。

一旦运行我写的我可以得到GLSurfaceView正确显示第一个纯色,但每当我改变任何值,并调用重建阴影程序中的统一插槽我在LogCat中得到此错误:

ERROR/libEGL(14316):无当前上下文调用OpenGL ES的API(每线程记录一次)

当然和GLSurfaceView保持初始颜色。

我一直在寻找解决这个问题的所有方法,尽我所能告诉我可能需要在设置渲染器之前在某处设置EGLContext。但是,我没有在API演示中看到关于此的任何内容,并且我可以在网上找到的唯一信息是在GLSurfaceView甚至可用之前编写的。

我是否需要设置EGLContext还是错过了别的东西?


附加信息,可以帮助:

- 二手XML文件来设置UI(而据我可以告诉代码做它并不能帮助)

- 当我尝试在单独的程序中从SD卡加载新纹理时遇到同样的麻烦。我可以得到第一个纹理正常工作,但是当使用相同的方法加载第二个纹理时,我得到相同的错误并且没有任何变化。

+0

您是否使用多个线程? – 2010-08-18 02:10:07

回答

10

你不是从OpenGL线程调用它。如果一个不同的线程试图用OpenGL做某些事情,那么排队并在OpenGL线程中调用它。

+0

你可以指向一些代码块/在这里添加一些例子的答案 – gonephishing 2018-01-05 12:52:15

相关问题