Hoà*_*ơng 2 java colors libgdx
MyGroup:
public class GShape extends Group{
private ShapeRenderer shape;
public GShape() {
super();
shape = new ShapeRenderer();
}
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
shape.begin(ShapeType.Line);
Gdx.gl10.glLineWidth(5);
shape.setColor(1, 1f, 1f, 1f);
shape.line(0, 0, 200, 100);
shape.end();
}
}
Run Code Online (Sandbox Code Playgroud)
主要:
public class GameControl implements ApplicationListener {
private Stage stage;
private GShape gShape;
@Override
public void create() {
stage = new Stage(480,320,false);
Texture t = new Texture(Gdx.files.internal("data/the200.png"));
Image i = new Image(t);
stage.addActor(i);
gShape = new GShape();
stage.addActor(gShape);
}
@Override
public void dispose() {
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
stage.draw();
// gShape.render();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
Run Code Online (Sandbox Code Playgroud)
形状颜色不是白色?为什么?
P.T*_*.T. 11
你可能会得到不一致的结果,因为你是混合SpriteBatch
和ShapeRenderer
上下文.这两个都期望它们在OpenGL中"存储"以维持begin()
和end()
调用.
该Actor
draw()
方法在SpriteBatch
begin()
已经被调用的上下文中调用,因此您需要在开始之前结束它ShapeRenderer
.(而且你需要SpriteBatch
在返回之前重启.
像这样:
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end(); // ** End the batch context
shape.begin(ShapeType.Line);
// .. draw lines ...
shape.end()
batch.begin(); // ** Restart SpriteBatch context that caller assumes is active
}
Run Code Online (Sandbox Code Playgroud)