使用Android OpenGL ES,更具体地说是使用LibGDX库,我正在尝试使用以下代码仅重绘屏幕的一部分(屏幕的其余部分先前已绘制,无需重新绘制):
Gdx.gl20.glViewport(x, y, width, height);
Gdx.gl20.glScissor(x, y, width/2, height/2);
Gdx.gl20.glEnable(GL20.GL_SCISSOR_TEST);
Gdx.gl20.glClear(GL10.GL_COLOR_BUFFER_BIT);
_batch.begin();
_batch.draw(_imgTimeBackground, 70, 215);
_batch.end();
Gdx.gl20.glDisable(GL20.GL_SCISSOR_TEST);
屏幕应该是:
但剪刀区域以外的区域最终也会被错误地渲染:
除了GL_COLOR_BUFFER_BIT
之外,我还尝试清除GL_STENCIL_BUFFER_BIT
,GL_DEPTH_BUFFER_BIT
以及3的所有组合(包括不调用glClear
),但无济于事。将glClear
移动到最开始正确地绘制剪刀区域,但清除剪刀外的区域,这会破坏剪刀的目的。
让我知道如何在不清除/重绘屏幕其余部分的情况下在OpenGL中仅绘制一部分屏幕。