1

所以我正在用 Haxe 和 Haxepunk 制作游戏。美好的。除了当我导出到 C++ 时,什么都没有渲染!我之前在 Haxepunk 板上发布了这个,所以可以在这里找到更多信息。这是 Haxepunk 线程的摘录;

我仍然可以很好地编译它,但是除了我定义的背景颜色之外,游戏中没有任何东西实际上是渲染的。不过,控制台仍然可以正常工作并且渲染良好。HaxePunk 控制台告诉我Atlases using BitmapData will not be managed

我使用的是 Ash 的组件实体系统,而不是使用 Haxe 的实体。相关对象Visible附有一个组件,如下所示;

package game.component;

import com.haxepunk.Graphic;
import com.haxepunk.graphics.Image;

class Visible {

    public var image(default, default) : Graphic;

    public function new() {
        this.image = Image.createRect(16, 16, 0xFF0000);
    }
}

这是相关的渲染系统;

package game.system;

import ash.core.Engine;
import ash.core.Entity;
import ash.core.System;
import ash.tools.ListIteratingSystem;

import com.haxepunk.HXP;

import Constants;
import game.component.Positionable;
import game.component.Visible;

import game.node.RenderNode;

class RenderingSystem extends ListIteratingSystem<RenderNode> {

    public function new() {
        super(RenderNode, this.updateNode);
    }

    private function updateNode(node:RenderNode, time:Float) : Void {
        node.renderable.image.render(HXP.buffer, node.position.position, Constants.ORIGIN);
    }
}

有小费吗?

4

1 回答 1

3

如果您在 C++ 中使用缓冲区渲染,则需要在构造函数中设置渲染模式。这是因为 Engine 构造函数是创建屏幕缓冲区的唯一位置。不幸的是,API 文档没有清楚地解释这一点。

class Main extends Engine
{
    public function new()
    {
        super(0, 0, 60, false, RenderMode.BUFFER);
    }
}
于 2013-07-12T14:00:28.900 回答