我使用自己的 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