【问题标题】:Rendering text in openGL 4 - does not work在 openGL 4 中渲染文本 - 不起作用
【发布时间】:2012-03-04 00:50:31
【问题描述】:

我一直在尝试使用 glutBitmapCharacter() 呈现文本。

这是我目前所拥有的 2D 文本渲染功能:

void drawString(int x, int y, char* string) {
int i, len;

glDisable(GL_TEXTURE);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);

glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos2i(x, y);

for (i = 0, len = strlen(string); i < len; i++) {
    glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)string[i]);
}
glEnable(GL_TEXTURE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
}

在场景渲染函数中,我做了这个调用:

drawString(0, 0, "TESTING");

这些是唯一可以显示任何文本的 x 和 y 值,在这种情况下,“TESTING”出现在屏幕中间,“TE”为红色(我想要的颜色),“STING”为黑色.

我看到的处理这个函数的所有代码都使用了早期版本的openGL和不推荐使用的代码,所以我不知道该怎么办。

【问题讨论】:

    标签: c++ opengl glut


    【解决方案1】:

    以上绝对不是openGL 4兼容的代码。

    请参阅the OpenGL 4 Reference manual,您会发现 glColorglRasterPos 甚至不存在(它们已被弃用.. 我相信甚至回到 openGL 3)

    为了了解如何以不使用固定功能的现代方式使用 openGL,我建议this tutorial

    所以基本上答案是没有glRasterPos我相信这个功能是不行的 在 openGL 4.(或 3 中)

    可行的方法参考这个answer

    【讨论】:

    • Forward-only vs 兼容性是一个运行时每个上下文的选项,不会阻止代码编译。
    • 是的,你是对的 Ben,不是说编译。感谢您的提醒
    • 如果他的问题是使用 removed 功能(弃用和删除是两个不同的东西),那么他的代码根本不会显示任何文本.但这不是他所看到的。他能够显示文本,但它已损坏。此外,很难偶然创建一个 4.0 核心上下文;在所有情况下,它都需要特殊情况代码。
    • 尼科尔你说得有道理。因此,也许 OP 实际上没有 4.0 核心上下文,但正在使用默认上下文,在这种情况下,他的问题应该以不同的方式陈述
    • 感谢您的回复,明天我会看看我能用 FTGL 做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 2014-04-15
    • 2015-07-08
    • 1970-01-01
    相关资源
    最近更新 更多