在Android OpenGL ES中使用glScissor仅绘制一部分屏幕

时间:2015-03-29 18:31:28

标签: android opengl-es libgdx

使用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);

屏幕应该是: valid image

但剪刀区域以外的区域最终也会被错误地渲染: actual image

除了GL_COLOR_BUFFER_BIT之外,我还尝试清除GL_STENCIL_BUFFER_BITGL_DEPTH_BUFFER_BIT以及3的所有组合(包括不调用glClear),但无济于事。将glClear移动到最开始正确地绘制剪刀区域,但清除剪刀外的区域,这会破坏剪刀的目的。

让我知道如何在不清除/重绘屏幕其余部分的情况下在OpenGL中仅绘制一部分屏幕。

0 个答案:

没有答案