Я просмотрел решения и на самом деле их не нашел. Я получаю эту ошибку, потому что кажется, что выполнение происходит за пределами потока gl. Однако я не уверен, как это исправить. Код выглядит следующим образом:opengl es api без текущего контекста
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();
}
площадь простирается от формы
Это, кажется, решить эту проблему, однако теперь я получаю «называется„нереализованный OpenGL ES API“, даже если у меня есть <использует-SDk андроида: minSdkVersion =» 10" /> <использует-функцию андроид: required = "true" android: glEsVersion = "0x00020000" /> в манифесте –
Какая строка вашего кода дает это сообщение? @ user1260028 – Tim