2016-10-10 75 views
-1

我有一個通過getColorBufferTexture()方法從FrameBuffer中取出的紋理。紋理很好,雖然垂直翻轉如預期,我可以在沒有問題的批次中繪製它。嘗試從紋理中獲取像素圖的錯誤(libGDX)

我試圖將它添加到一個PixmapPacker因爲我想將它保存爲進一步使用,但我得到一個異常「這TextureData執行不返回像素圖」,我不知道該怎麼克服。

這是發生碰撞的代碼:

if (!frameBuffer.getColorBufferTexture().getTextureData().isPrepared()) 
     frameBuffer.getColorBufferTexture().getTextureData().prepare(); 
    packer.pack("panel_cells", frameBuffer.getColorBufferTexture().getTextureData().consumePixmap()); 

正如你看到的,我已經打過電話準備()第一,但事實證明,紋理總是在這一點上準備(因此「如果「第一個),所以這不是問題。無論如何,我已經離開這兩行代碼,以防萬一...

在此先感謝!

回答

0

看來我終於通過重寫創建幀緩衝時,下面的方法解決了這個問題:

FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, bufferSize, bufferSize, false) { 
     @Override 
     protected Texture createColorTexture() { 
      PixmapTextureData data = new PixmapTextureData(new Pixmap(width, height, format), format, false, false); 
      Texture result = new Texture(data); 
      result.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); 
      result.setWrap(Texture.TextureWrap.ClampToEdge, Texture.TextureWrap.ClampToEdge); 
      return result; 
     } 
    }; 

現在我有封隔器的問題,但是這是一個不同的故事......至少我可以獲得紋理。

+0

不,實際上這不起作用。我擺脫了這個異常,但是consumePixmap()方法似乎沒有像預期的那樣工作:而frameBuffer.getColorBufferTexture返回的紋理工作正常,如果你做一個新的Texture(frameBuffer.getColorBufferTexture()。getTextureData()。consumePixmap ())你顯然會以空的紋理結束,這是毫無意義的,無論如何,它是無用的。 –