glBitmap在switch case / if else中不起作用

时间:2015-06-09 23:27:32

标签: c++ opengl bitmap glut freeglut

我正在尝试使用OpenGL和Freeglut在屏幕上绘制位图字体。下面的显示功能正常工作:

    void display(void)
    {
      glClear(GL_COLOR_BUFFER_BIT);
      glColor3f (1.0, 0.0, 0.6);
      glRasterPos2i (20, 20);
      glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterM);
      glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterA);
      glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterH);
      glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterT);
      glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterB);
      glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, raster);
      glFlush();
    }

但是这个函数不会绘制任何东西:

    void display(void)
    {
       int n,counter=0;
       char inputarray[10];
       std::cout << "\n What's your name?\n";
       std::cin.get(inputarray,n);
       glClear(GL_COLOR_BUFFER_BIT);
       glColor3f (1.0, 0.0, 0.6);
       glRasterPos2i (20, 20);

        while(counter<10)
        {
          if(inputarray[counter]=='b')
          {
            glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterB);
            std::cout << "B";
          }
          else if (inputarray[counter]=='m')
          {
            glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterM);
            std::cout << "M";
          }
          else if (inputarray[counter]=='a')
          {
            glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterA);
            std::cout << "A";
          }
          else if (inputarray[counter]=='h')
          {
            glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterH);
            std::cout << "H";
          }
          else if (inputarray[counter]=='t')
          {
            glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, rasterT);
            std::cout << "T";
          }
          else
          {
            glBitmap (23, 20, 0.0, 0.0, 26.0, 0.0, raster);
            std::cout << "*";
          }

          counter++;

        }
        glFlush();
     }

这里有趣的是当我使用不同的if / else规则比较数字时,它可以工作!但这个字符比较不起作用。它将输入if规则,但不会绘制任何内容。

我真的很困惑。为什么它会进入if范围,而不是在char比较中绘制位图并在int比较中绘制?

(我正在使用Ubuntu 14.04和gcc版本4.8.2)

编辑: 我将输入更改为典型的“cin”,现在代码正常工作。但我仍然不明白为什么旧的方式在if语句中打印正确的“cout”,但glBitmap没有绘制任何东西。这是一个错误还是我错过了什么?

0 个答案:

没有答案