OpenGL打印文本到滚动窗口

时间:2009-08-21 17:29:30

标签: opengl

我正在创建一系列由OpenGL创建的滚动窗口。此代码是遗留代码,能够成功完成此操作。然后我想在这些滚动列表中添加文本,我通过绘图回调函数来完成。当滚动列表出现在窗口中时,绘制回调将文本打印到列表中。这通常有效。但是当我滚动到第7个列表时,它会停止打印文本。我可以选择它,但它不会打印文本。这是我用于将文本打印到滚动列表窗口的代码:

void PrintString(const char *str, int ListBase)
{
    glPushAttrib(GL_LIST_BIT)
    glListBase(ListBase)
    glCallLists(strlen(str), GL_UNSIGNED_BYTE, str)
    glPopAttrib()
}

当我滚动浏览每个列表时,我多次调用它。它到达此功能并打印前六个滚动列表的文本。当它到达第7时,它停止打印文本。我花了好几个小时来解决这个问题,我得出的结论是OpenGL和打印文本。请帮忙。你如何在OpenGL中打印文本,我的字体已经定义了?为什么不打印呢?

1 个答案:

答案 0 :(得分:1)

如果您只想用最少的代码更改来调试它,您应该看一下gDEBugger。在调查这些事情时,这基本上是保持理智的唯一方法。

如果考虑重写文本渲染器,则应考虑将小块绘制到屏幕外缓冲区(使用CairoAnti-Grain或Windows API),将它们作为纹理上传并绘制它们。这应该可以提高渲染质量(正确的字距调整等)和速度,另外你只需要更容易调试OpenGL调用。