0

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

4

0 回答 0