我正在尝试使用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没有绘制任何东西。这是一个错误还是我错过了什么?