2013-07-09 36 views
1

所以我正在與Haxe和Haxepunk進行遊戲。精細。除了當我輸出到C++時,沒有什麼是渲染的!我之前在Haxepunk板上發佈了此消息,因此可以找到更多信息here。這是Haxepunk線程的摘錄;HaxePunk:導出到C++時沒有任何渲染

我仍然可以編譯它,但遊戲中沒有任何內容實際上是渲染,除了我定義的背景顏色。儘管如此,控制檯仍然可以正常工作並渲染。 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); 
    } 
} 

任何提示?

回答

3

如果您在C++中使用緩衝區渲染,則需要在構造函數中設置渲染模式。這是因爲引擎構造函數是創建屏幕緩衝區的唯一地方。不幸的是API文檔沒有清楚地解釋這一點。

class Main extends Engine 
{ 
    public function new() 
    { 
     super(0, 0, 60, false, RenderMode.BUFFER); 
    } 
} 
+0

非常感謝! (對於那些跟蹤,他是HaxePunk的開發者) – JesseTG