![](/img/trans.png)
[英]Android 2.2 Webview causes OpenGL ES API with no current context (logged once per thread)
[英]opengl es api with no current context
我已经查看了解决方案并且没有真正找到解决方案。 我收到此错误,因为它似乎执行发生在gl线程之外。 但是我不知道如何解决这个问题。 代码如下:
public shape()
{
super();
vertexShader = Shader.loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode); //<============
fragmentShader = Shader.loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
ByteBuffer buffer = ByteBuffer.allocateDirect(getCoordinates().length * 4);
buffer.order(ByteOrder.nativeOrder());
vertexBuffer = buffer.asFloatBuffer();
vertexBuffer.put(getCoordinates());
vertexBuffer.position(0);
ByteBuffer drawListBuffer = ByteBuffer.allocateDirect(getOrderOfDraw().length * 2);
drawListBuffer.order(ByteOrder.nativeOrder());
listBuffer = drawListBuffer.asShortBuffer();
listBuffer.put(getOrderOfDraw());
listBuffer.position(0);
mProgram = GLES20.glCreateProgram(); // create empty OpenGL Program
GLES20.glAttachShader(mProgram, vertexShader); // add the vertex shader to program
GLES20.glAttachShader(mProgram, fragmentShader); // add the fragment shader to program
GLES20.glLinkProgram(mProgram);
}
并且调用渲染器是
Square square = new Square(5, 5);
public void onDrawFrame(GL10 unused)
{
unused.glLoadIdentity();
unused.glClear(GLES20.GL_COLOR_BUFFER_BIT);
square.Draw();
}
方形从形状延伸
如果那个new Square(5,5);
不是任何opengl回调的一部分(我假设你使用的是glSurfaceView),那么我认为它不会在OpenGL线程上运行。 它将在你创建glSurfaceView时执行,我相信它是在主要的android线程上。
尝试移动new Square(5,5);
在onSurfaceCreated
内部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.