【发布时间】:2015-10-25 15:52:42
【问题描述】:
从paintGL() 之外的各个地方调用glClearColor 时我遇到了一个小问题。目的是使用户能够即时设置清除颜色,但这不会按计划工作,除非在paintGL中的每一帧都调用glClearColor。
目标:
void GLWidget::mousePressEvent(QMouseEvent *event)
{
m_lastPos = event->pos();
glClearColor(1.0f, 0.0f, 0.0f, 1.0f); //<-- Doesn't change clear colour
}
非最佳解决方法:
void GLWidget::mousePressEvent(QMouseEvent *event)
{
m_lastPos = event->pos();
r = 1.0f;
g = 0.0f;
b = 0.0f;
a = 1.0f;
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glClearColor(r, g, b, a);
...
我认为这与 Qt 如何交换缓冲区和更新屏幕有关,但尚不清楚究竟是什么原因造成的。任何想法都会很棒,谢谢。
【问题讨论】: