java - 没有当前上下文的 opengl es api

标签 java android opengl-es

我已经查看了解决方案,但还没有找到真正的解决方案。我收到此错误是因为执行似乎发生在 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 线程上。

尝试在 onSurfaceCreated 内移动 new Square(5,5);

关于java - 没有当前上下文的 opengl es api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286819/

相关文章:

java - 当程序错误退出时如何在终端中重新启动程序?

Java Swing 应用程序卡住

javascript - WebGL 使用原始数据比 js Image() 慢

java - 为什么我调用返回列表的方法时会打印一个空列表?

java - Eclipse java JAX-RPC Web服务导入生成接口(interface)而不是类

android.support.test 无法解析

android - 哪个 Android Intent 用于在 Dropbox 应用程序中获取 'Save to device' 行为?

java - Parcelable 协议(protocol)要求该类实现 Parcelable

java - 在java中填充未初始化的数组? (或解决方法!)

Android 7 GraphicBuffer 替代方案,用于直接访问 OpenGL 纹理内存