【发布时间】:2015-12-03 16:41:39
【问题描述】:
我想根据我的内部应用逻辑只渲染我的屏幕的一部分。
但我在为glScissor 提供参数时遇到问题。
这是我的onDrawFrame 方法:
@Override
public void onDrawFrame(GL10 gl) {
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glShadeModel(GL10.GL_FLAT);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glPushMatrix();
gl.glScissor(250,250,300,300);
gl.glEnable(GL10.GL_SCISSOR_TEST);
gl.glViewport(250,250,300,300);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
attack.draw(gl);
gl.glDisable(GL10.GL_SCISSOR_TEST);
gl.glPopMatrix();
}
250,250,300,300 只是我测试时给出的值……但是屏幕内容是在屏幕的多个位置重复绘制的……
我正在使用2*x/width-1、2*y/height-1 将我的屏幕坐标映射到我的attact.draw(攻击是我的一类对象)中的OpenGL 坐标
谁能告诉我我在使用glScissor 时犯了什么错误,并指导我找到正确的做法。
【问题讨论】:
标签: android opengl-es renderpartial