我正在恢复 2004 年的一些遗留 OpenGL 代码。在这个过程中,字母的显示停止工作。 glutBitmapCharacter 不起作用,它默默地失败并且什么也没有出现。显然,20 年来图书馆发生了微妙的变化。 使用 BeginDataStrip / EndDataStrip 的代码会像往常一样显示,但任何涉及 glutBitmapCharacter 的内容都是不可见的。
这是一个小测试程序,演示了同样的问题。请问,如何才能让第 45 行指定的字母“A”真正出现?
环境:MacOS 14.2.1、VSCode 1.98.1、llvm 工具链。
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Gl_Window.H>
#include <FL/gl.h>
#include <GLUT/GLUT.h>
void glutWireSphere (GLdouble radius, GLint slices, GLint stacks);
class MyGlWindow : public Fl_Gl_Window {
private:
float blue;
public:
MyGlWindow(int x, int y, int w, int h, float bblue = 0.0f,
const char* l = 0) : Fl_Gl_Window(x, y, w, h, l) {
blue = bblue;
}
void draw() override {
if (!valid()) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0, 0, w(), h());
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 5.0);
glEnable(GL_DEPTH_TEST);
valid(1);
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Set up the camera
gluLookAt(0.0, 0.0, 4.5, // eye position
0.0, 0.0, 0.0, // look-at position
0.0, 1.0, 0.0); // up direction
// Draw a sphere
glColor3f(0.5, 1.0, blue);
glutWireSphere(0.8, 20, 20);
// NOT WORKING:
glRasterPos2f(0.5, 0.4);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, 'A');
glFlush();
}
};
int main() {
Fl_Window* window = new Fl_Window(400, 800, "FLTK Sphere Example");
MyGlWindow* glWindow = new MyGlWindow(10, 20, window->w() - 20, 400 - 20, 0.0);
window->resizable(window);
window->end();
window->show();
// Fl_Widget * const *kids = tab1.array();
return Fl::run();
}
更换:
#包括