0

我正在制作一个安卓游戏,我需要帮助。如何将glthis.context发送到线程?

这是代码:

new Thread(new Runnable() {
            public void run() {
                Building b=new Building();
                b=new Building();
                b.loadGLTexture(gl, this.context);
                first=0;
                bulid++;
                bubbles.add(b); 
            }
        }).start();
4

2 回答 2

0

你能再澄清一下你的问题吗?你从哪里来gl

由于 OpenGL ES(以及 OpenGL 本身)是一个有状态的图形库,因此不应gl在渲染线程以外的其他线程中使用。

当您创建 GLSurface 时,正在创建一个新线程。现有的将继续存在(即处理onTouchEvent()呼叫)。

在渲染线程之外的任何其他线程中使用gl可能会弄乱状态机,并且您的 GL 调用将不会被处理,因为新线程不使用相同的 OpenGL 上下文。

于 2013-10-03T20:28:31.020 回答
0

您可以创建一个内部类,以便:

public class ClassName implements Runnable{

    GL10 mGl;
    Context mContext;

    public ClassName(GL10 mGl, Context mContext){
        this.mGl = mGl;
        this.mContext = mContext;
    }

    public void run() {
        Building b=new Building();
        b=new Building();
        b.loadGLTexture(mGl, mContext);
        first=0;
        bulid++;
        bubbles.add(b); 
    }

}

并在您的代码中使用此 Runnable 实现:

new Thread(new ClassName(gl, this.context)).start();
于 2013-10-03T20:36:06.030 回答