我正在为使用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