在使用GLSL

时间:2017-02-02 07:34:30

标签: qt opengl glsl ftgl

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

0 个答案:

没有答案