2015-12-06 75 views
1

我得到了一個虛擬寬度和虛擬高度的FitViewport。當屏幕有另一個長寬比比我的虛擬分辨率黑條添加。我想在這些信箱裏畫一些東西。LibGDX:如何繪製FitViewport的黑色條紋區域?

我試圖這樣做的,但只有對象「裏面的」我的虛擬分辨率繪製對象「外」只是不可見:

viewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, cam); 
viewport.apply(); 

batch.setProjectionMatrix(cam.combined); 

batch.begin(); 
batch.draw(texture, viewport.getRightGutterX(), 0); 
batch.end(); 

如何與信箱內畫?

回答

2

您需要第二個視口,可能是與FitViewport具有相同虛擬尺寸的ExtendViewport。

//create: 
fitViewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT); 
extendViewport = new ExtendViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT); 

//resize: 
fitViewport.update(width, height); 
extendViewport.update(width, height); 

//render: 

fitViewport.apply(); 
batch.setProjectionMatrix(fitViewport.getCamera().combined); 
batch.begin(); 
//draw game 
batch.end(); 

extendViewport.apply(); 
batch.setProjectionMatrix(extendViewport.getCamera().combined); 
batch.begin(); 
//draw stuff in border 
batch.end(); 

如果你想確保邊框的東西不會與你的遊戲重疊,你可以交換上面的繪製順序。

或者您可以使用ExtendViewport開始處理所有事情。

+2

https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/ViewportTest2.java這樣做,但沒有第二個'Viewport'。 – noone