opengl es api with no current context
android, java, opengl-es
Solution
If that `new Square(5,5);` is not part of any of the opengl callbacks (I assume you're using a glSurfaceView), then I don't think it runs on the OpenGL thread. It will be executed when your glSurfaceView is created, which I believe is on the main android thread.
Try moving `new Square(5,5);` inside of `onSurfaceCreated`.
Problem
I have looked through the solutions and haven't really found one. I am getting this error because it seems like the execution happens outside of the gl thread. However I am not sure how to fix this. The code is as follows: ``` 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); } ``` and the calling renderer is ``` Square square = new Square(5, 5); public void onDrawFrame(GL10 unused) { unused.glLoadIdentity(); unused.glClear(GLES20.GL_COLOR_BUFFER_BIT); square.Draw(); } ``` Square extends from shape