我正在爲使用libGDX的Android開發遊戲。我實現了「聚光燈效果」,突出了教程級別中的一些場景元素。我確實使用Pixmap類來實現這一點。所以我做了這樣的事情:Android LibGDX Pixmap問題
public class ComplexSpotlight implements MoveObserver{
// somewhere in class
public void update(){
black.setColor(0, 0, 0, 0.7f);
black.fill();
black.setColor(0, 0, 0, 0);
for(Map.Entry<MoveObservable, Vector2> entry : currentObservablePositions.entrySet()){
Vector2 position = entry.getValue();
int x = (int)(Gdx.graphics.getWidth()/2+position.x);
int y = (int)(Gdx.graphics.getHeight()*1.5f-position.y);
int radius = 50;
black.fillCircle(x, y, radius);
System.out.println("at "+x+" "+y);
}
overlay.dispose();
overlay = new Texture(black);
}
public Texture getOverlayTexture(){
return overlay;
}
快速的解釋 - 我創建一個點陣圖與顏色(0,0,0,0.7f)加油吧。在此之後,我使用Pixmap.fillCircle()方法繪製透明圓。然後我使用這個Pixmap創建新的紋理。我已經使用以下設備測試了此代碼:HTC One V(480 * 800),Sony XPeria Neo 15i(480 * 854),HTC Desire S(480 * 800),並且效果不錯;
但今天我發現,有關於HTC One X的(1280 * 720)和Gamsung的Nexus(1280 * 720)的問題 - 我只看到黑屏。
所以如果有人給我一些關於這個問題的解釋會很好。鏈接,想法 - 任何事情都可能有幫助。 在此先感謝!
有問題的手機是相當大的屏幕。你用完紋理記憶或類似的東西了嗎? (假設您以全分辨率繪製)。你可以嘗試渲染到一個較小的視口,看看是否解決了這個問題。還要確保它的覆蓋層是真正的問題(如果禁用覆蓋層,背景顯示是否正確?如果你用紅色或白色填充它) –
我也注意了屏幕尺寸,但沒有任何建議能夠 。創建和呈現我的疊加層時沒有發生任何異常/錯誤。在屏幕上輕敲疊加刪除(根據我的遊戲邏輯),然後看到我的背景和遊戲對象。此外,我顯示彈出式文本消息上方此覆蓋,它呈現正確。 我會嘗試測試你提出並更新我的帖子的結果。 – Viacheslav
@ P.T。對於大屏幕尺寸,您完全正確 - 由於某些原因,我使用了2 *屏幕尺寸,將紋理尺寸增加到4倍!將Pixmap大小更改爲屏幕大小後,所有效果都很好。如果您發表評論作爲答案,我會批准它作爲主題解決方案。謝謝! – Viacheslav