我目前正在使用 Qt5.1 并尝试在 QGLWidget 中绘制一些 OpenGL 内容:
void Widget::paintGL() {
startClipping(10, height()-110,100,100);
qglColor(Qt::red);
glBegin(GL_QUADS);
glVertex2d(0,0);
glVertex2d(500,0);
glVertex2d(500,500);
glVertex2d(0,500);
glEnd();
qglColor(Qt::green);
this->renderText(50, 50, "SCISSOR TEST STRING");
endClipping();
}
四边形被正确裁剪,但文本没有。 我尝试了三种实现 startClipping 方法的方法:剪刀测试、将视口(viewport)设置为裁剪区域以及使用模板缓冲区。 它们都不起作用,整个字符串都被绘制出来,而不是在裁剪区域的边缘被切断。
现在我的问题是:这种行为是 Qt 的错误还是有什么我错过了或者我可以尝试的另一种可能性?
最佳答案
经过一周的尝试,我突然发现了一种非常简单的方法来实现我一直在寻找的东西。
使用 QPainter它的方法而不是 QGLWidget 的 renderText()
只是让文本剪辑工作:
QPainter *painter = new QPainter();
painter->begin();
painter->setClipping(true);
painter->setClipPath(...); // or
painter->setClipRect(...); // or
painter->setClipRegion(...);
painter->drawText(...);
painter->end();
关于c++ - 使用 Qt OpenGL 进行文本裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722166/