Qt 使用着色器获取QPaint drawtext颜色更改

Qt 使用着色器获取QPaint drawtext颜色更改,qt,opengl,Qt,Opengl,我使用QPainter来绘制文本及其工作状态,然后我将OpenGL着色器添加到这个页面中。但我无法使用着色器更改文本的颜色 这是qPaint drawText代码 program.bind(); QPainter painter; painter.begin(&device); QColor fontColor = QColor(1, 1, 1); painter.setPen(fontColor); QFont font; font.setPointSize(24); painte

我使用
QPainter
来绘制文本及其工作状态,然后我将OpenGL着色器添加到这个页面中。但我无法使用着色器更改文本的颜色

这是
qPaint drawText
代码

program.bind();
QPainter painter;
painter.begin(&device);
QColor fontColor = QColor(1, 1, 1);

painter.setPen(fontColor);

QFont font;
font.setPointSize(24);
painter.setFont(font);


painter.drawText(drawRect, "Hello", QTextOption(Qt::AlignCenter));

painter.end();

program.release();
在这里,颜色设置为白色,在着色器中,只需将颜色设置为红色

最终输出始终是QPaint中设置的颜色,而不是着色器中的颜色


我们不能使用着色器来更改
qPaint drawText
函数输出吗?

通过“着色器”您指的是OpenGL着色器,对吗?着色器只影响OpenGL状态,与
Qt
绘制实现无关。@G.M.感谢您的评论,我更新了问题,是的,我指的是OpenGL着色器。QPainter drawtext不是使用OpenGL绘制文本吗?即使
Qt
使用OpenGL绘制后端,它也会将自己的状态与OpenGL的状态分开。例如,考虑一个相当复杂的着色器程序,该程序生成多个输出,可用于以后的渲染传递——<代码> QT无法知道输出的预期用途。简言之,有很多原因说明为什么将
Qt
绘制引擎状态与OpenGL状态分开是一件好事。通过“着色器”,您指的是OpenGL着色器,对吗?着色器只影响OpenGL状态,与
Qt
绘制实现无关。@G.M.感谢您的评论,我更新了问题,是的,我指的是OpenGL着色器。QPainter drawtext不是使用OpenGL绘制文本吗?即使
Qt
使用OpenGL绘制后端,它也会将自己的状态与OpenGL的状态分开。例如,考虑一个相当复杂的着色器程序,该程序生成多个输出,可用于以后的渲染传递——<代码> QT无法知道输出的预期用途。简而言之,有很多原因说明为什么将
Qt
paint引擎状态与OpenGL状态分开是一件好事。