在openGL 4-中呈现文本不起作用

Rendering text in openGL 4 - does not work

本文关键字:文本 不起作用 openGL      更新时间:2023-10-16

我一直在尝试使用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值,在这种情况下,"测试"显示在屏幕中间,"TE"为红色(我想要的颜色),"STING"为黑色。

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

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

请参阅OpenGL 4参考手册,您会发现glColorglRasterPos甚至不存在(它们已被弃用。我相信甚至早在OpenGL 3中)

为了学习如何以不使用固定功能的现代方式使用openGL,我推荐本教程

所以基本上答案是,如果没有glRasterPos,我相信这个函数就无法工作在openGL 4中。(或3)

关于可行的方法,请参阅以下答案