eye*_*erg 3 java android 2d render libgdx
这是非常基本的,但我无法弄清楚出了什么问题.基本上我是想在我的一个物体的某个区域周围绘制一个圆圈.我ShapeRenderer在构造函数中初始化了一个(称为srDebugCircle),并在render()方法中使用这个for循环来绘制每个对象.
for (GameObject object : levels.get(LEVEL_INDEX)) {
if (object.getType() == ObjectType.SWINGING_SPIKES) {
object.draw(batch);
srDebugCircle.begin(ShapeType.Filled);
srDebugCircle.circle(object.getxPos() + object.getWidth()/2, object.getyPos(), object.getWidth()/2);
srDebugCircle.setColor(Color.BLACK);
srDebugCircle.end();
}
if (object.getType() == ObjectType.COIN && (Coin) object).isVisible()) {
object.draw();
}
...
}
Run Code Online (Sandbox Code Playgroud)
问题是当我添加圆圈的代码时,我只看到15个对象中的4个.当我删除/评论它时,它照常工作 - 但是,在这两种情况下,我永远不会看到一个黑色的圆圈.
我特别谈到这部分:
srDebugCircle.begin(ShapeType.Filled);
srDebugCircle.circle(object.getxPos() + object.getWidth()/2, object.getyPos(), object.getWidth()/2);
srDebugCircle.setColor(Color.BLACK);
srDebugCircle.end();
Run Code Online (Sandbox Code Playgroud)
谁能明白为什么我有这个问题?
Springrbua答案的另一种选择是使用Pixmaps而不是ShapeRenderer绘制.在SpriteBatch和ShaperRenderer之间切换是一项昂贵的操作,Pixmaps不需要结束SpriteBatch.Pixmap提供的绘制方法比ShapeRenderer少,但它确实包括绘制一个实心圆.
Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888);
pixmap.setColor(Color.BLACK);
pixmap.fillCircle(x, y, r);
Texture texture = new Texture(pixmap);
// render
batch.begin();
batch.draw(texture, x, y);
batch.end();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4453 次 |
| 最近记录: |