我使用自己的基于QGraphicsItem的类在QGraphicsScene中绘图。我还使用FTGL进行文本渲染。在我开始使用着色器之前一切正常。我的帧更新逻辑如下:在 MyGraphicsItem::paint 我首先使用以下代码更新帧(对于 YUV 图像):
glEnable(GL_MULTISAMPLE);
QGLFunctions glFuncs(QGLContext::currentContext());
glFuncs.glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_RECTANGLE, tex0Id);
glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0, 0, 0, width, height, GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
glFuncs.glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_RECTANGLE, tex1Id);
glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0, 0, 0, width/2, height/2, GL_LUMINANCE, GL_UNSIGNED_BYTE, data + (width * height));
glFuncs.glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_RECTANGLE, tex2Id);
glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0, 0, 0, width/2, height/2, GL_LUMINANCE, GL_UNSIGNED_BYTE, data + (int)(5 * width * height) / 4);
shader->bind(width, height);
然后我渲染文本:
glDisable(GL_TEXTURE_RECTANGLE);
glOrtho(0, WIDTH, 0, HEIGHT, 0, 1);
glColor3f(0.0, 1.0, 0.0);
bufferFont.Render("This is a text", -1, FTPoint(150, 200, -1.0));
但不是文本,而是一个矩形。我试图禁用 GL_TEXTURE_2D,但它不起作用。如何同时使用着色器和 FTGL