我glScissor()
在我的应用程序中使用它并且它工作正常,但我遇到了一个问题:我有我的Window
对象,其绘图区域由该区域指定glScissor()
并在该区域内,我正在绘制我的ListView
对象,其绘图区域也应指定为glScissor()
因为我不想全部画出来。
在代码中,我可以将其表示为:
Window::draw()
{
glEnable(GL_SCISSOR_TEST);
glScissor(x, y, width, height);
// Draw some components...
mListView.draw(); // mListView is an object of ListView type
glDisable(GL_SCISSOR_TEST);
}
ListView::draw()
{
glEnable(GL_SCISSOR_TEST);
glScissor(x, y, width, height);
// Draw a chosen part of ListView here
glDisable(GL_SCISSOR_TEST);
}
但当然在这种情况下启用/禁用调用是错误的:
glEnable(GL_SCISSOR_TEST);
glEnable(GL_SCISSOR_TEST);
glDisable(GL_SCISSOR_TEST);
glDisable(GL_SCISSOR_TEST);
如果我删除那些内部 glEnable/glDisable 调用(ListView 中的调用),我无论如何都会得到两个 glScissor() 调用,这似乎也是错误的。
编辑
我想以某种方式实现这两种剪刀效果,我的意思是 - Window 应该只在它的剪刀区域中绘制,而内部 ListView 也只能在它的剪刀区域中绘制。
正如您在图片中看到的,我用红色矩形标记了Window
WORKS 的剪刀区域,用蓝色矩形标记了我想在其上绘制ListView
. 这就是我尝试使用嵌套剪刀的原因,但我知道它没用。所以基本上我的问题是,实现这一目标的最佳方法是什么?