我是openGL和android开发的新手,所以如果我的问题非常简单,请原谅我。
我正在尝试构建一个简单的小应用程序,它在三个EditTexts中从用户那里获取输入,表示RGB颜色的每个组件的0 - 100%值,以便在GLSurfaceView中显示。
问题在于我需要使用openGL ES 2.0,我需要使用统一值将数据传递到着色程序中,这样一旦我开始工作,我就可以继续我真正想要实现的目标了。
运行我编写的内容后,我可以让GLSurfaceView正确显示第一个纯色,但每当我更改任何值并调用重建着色程序中的统一插槽时,我都会在LogCat中收到此错误:
错误/ libEGL(14316):调用没有当前上下文的OpenGL ES API(每个线程记录一次)
当然GLSurfaceView仍然是最初的颜色。
我一直在寻找解决这个问题的方法,而且我可以告诉我可能需要在设置渲染器之前在某处设置EGLContext。但是,我没有在API演示中看到任何关于此的内容,我在网上找到的唯一信息是在GLSurfaceView可用之前编写的。
我是否需要设置EGLContext或者我错过了其他内容?
可能有用的其他信息:
- 使用XML文件来设置UI(据我所知,在代码中执行它无济于事)
- 当我尝试在单独的程序中从SD卡加载新纹理时遇到同样的麻烦。我可以让第一个纹理工作正常,但是当使用相同的方法加载第二个时,我得到相同的错误,没有任何变化。
答案 0 :(得分:11)
你不是从OpenGL线程调用它。如果一个不同的线程试图用OpenGL做某事,那就把它排队并在你的OpenGL线程中调用它。