gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:55:37 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com