Android OpenGL线程

时间:2013-09-20 14:35:50

标签: android opengl-es

我正在制作一款安卓游戏,我需要帮助。如何将 gl this.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();

2 个答案:

答案 0 :(得分:0)

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

作为OpenGL E.S. (以及OpenGL本身)是一个有状态的图形库,你不应该在渲染线程以外的另一个线程中使用gl

创建GLSurface时,正在创建新线程。现有的将继续存在(并处理onTouchEvent()次呼叫)。

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

答案 1 :(得分: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();