2015-12-08 128 views
0

我目前正在一個遊戲中,我需要與對象的像素完美的碰撞。然而,我得到的唯一障礙是實際上得到了物體的掩模。我想過把一個對象的精靈渲染成FrameBuffer,然後我將它轉換成一個像素映射,但我沒有這樣做(嘗試了很多方法,包括this繪製一個單精靈Pixmap - LibGDX

So ,我的問題是:是否有一種方法將單個精靈渲染成LibGDX中的像素圖?

回答

3

聽起來像把馬放在購物車後面。 Sprite是紋理的一個區域,它又是一個從文件(也就是Pixmap)加載的圖像。如果你只是想從文件加載圖像,那麼你可以這樣做:new Pixmap(Gdx.files.internal("yourfile.png"));。您也可以縮放和變換座標,而不必先渲染給FBO。

這就是說;在綁定FBO時獲取FrameBuffer的Pixmap與「taking a screenshot」一樣「簡單」,因爲它正是如此。

fbo.begin(); 
Gdx.gl.glClear(...); 
... //render to the FBO 
Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, fbo.getWidth(), fbo.getHeight()); 
fbo.end(); 

請注意,這將是look like it is up-side-down

但是,您可能只對像素數據感興趣,因此您不妨跳過步驟Pixmap,並使用ScreenUtils.getFrameBufferPixels方法。

但是,那說;使用像素數據進行碰撞檢測很可能不是您嘗試實現的最佳解決方案。相反,我建議查看其他選項,例如看看this tool,它可用於將圖像轉換爲碰撞形狀。

+0

+1。但加載紋理到像素圖不會爲我工作,因爲我加載的圖像是4倍小,並且不會reatin我給一個精靈的旋轉。 我會檢查出ScreenUtils方法,雖然 – TheMorfeus

+0

聽起來像你在做一個假設。像素完美意味着:像素完美。你在渲染精靈的時候做的任何變換,當你不渲染它時(或者更多),你也可以做。 – Xoppa