我正在编写一个基本的游戏引擎,并有一个抽象类代表在3D世界中可以绘制的任何对象,但是这个类内部有一个抽象方法Render(),我希望在每个绘制阶段引擎自动调用它。我该如何实现这一点,以便从我的抽象类派生的每个类都将自动调用Render()?
我使用java,android sdk 2.2和opengl es。
我使用java,android sdk 2.2和opengl es。
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的构造函数中将对象注册到注册表中。
代理模式。
public class RenderingEngine implements Engine {
private Engine originalEngine;
private Collection<AbstractRender3DObject> items;
public RenderingEngine(Engine originalEngine) {
// assing
}
public void draw() {
originalEngine.draw();
invokeRender();
}
private void invokeRender() {
for (AbstractRenderItem item : items) {
item.render();
}
}
public void register(Object3D item) {
if (item instanceof AbstractRender3DObject) {
items.add(item);
}
super.register(item);
}
}
我不清楚你使用的框架,所以我假设了一些方法和接口名称。但是思路如上所述。