0

我正在开发一款扫雷游戏。我有两个问题,一个是重塑,另一个是图纸编号。我正在使用 Ubuntu Linux。以下是代码片段,整个代码在这里

这是我在 main() 开始时编写的初始化代码

glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (400, 300);
glutCreateWindow ("MineSweeper");
glClearColor (1.0, 1.0, 1.0, 0.0);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

这是我传递给 glutDisplayFunc() 的 display() 函数,它实际上绘制了扫雷游戏所需的网格。

glClear (GL_COLOR_BUFFER_BIT);

glColor3f (0.0, 0.0, 0.0);
glLineWidth (3);

float i;
for(i = step; i< 1; i+=step) {
    glBegin(GL_LINES);
        glVertex3f(i,0,0);
        glVertex3f(i,1.0,0);
    glEnd();
    glBegin(GL_LINES);
        glVertex3f(0,i,0);
        glVertex3f(1.0,i,0);
    glEnd();
}

glFlush ();

我搜索了很多论坛,最后在 glutReshapeFunc() 中尝试了 reshape() 函数的代码

void reshape (int width, int height) {
   glViewport(0, 0, width, height);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0, width, 0, height, -1.0, 1.0);
   glFlush();
}

但它不起作用,输出是一个平面窗口。

此外,我想以不同颜色的字体样式显示数字,如下所示: 数字

我见过位图字体,但它们不能满足我的需要。使用字体或使用 OpenGL 函数手动绘制它们或在 OpenGL 中导入和绘制图像更好,如果是,我如何导入图像以使它们在调整窗口大小时不会失真。我不想要图像中的确切字体,但类似的东西会做。

4

0 回答 0