我正在编写一个基本的游戏引擎,并具有一个抽象类,该抽象类表示可以在3D世界中绘制的任何对象,但是在该类内部是一个抽象方法Render(),我想在每个绘制阶段由引擎自动调用该方法。我如何实现此方法,以便从我的抽象类扩展的每个类都将自动调用Render()?

我正在使用java,android sdk 2.2和opengl es。

最佳答案

您可以将可以渲染的每个对象注册到一个类,该类将在所有对象上调用render()。

例如 :

public class Registry{
    private static Collection<RenderedObject> register = new ArrayList<RenderedObject>();

    public static void add(RenderedObject obj){
        register.add(obj);
    }

    public static void renderAll(){
        for(RenderedObject obj : register){
            obj.render();
        }
    }
}

您可以在RenderedObject的构造函数中将对象注册到注册表中。

07-27 14:54