我刚刚开始使用 OpenGL。这是我的第一个代码:
// OpenGL hello program
#include<iostream>
#include <GL/glut.h>
#include <cstring>
void display() {
glClear(GL_COLOR_BUFFER_BIT);
char message[] = "Hello, world!";
glRasterPos2d(0, 0);
for (int i = 0; i < sizeof(message) / sizeof(message[0]); i++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, message[i]);
}
}
int main(int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitWindowSize(500, 500);
glutCreateWindow("OpenGL hello program");
glutDisplayFunc(display);
glutMainLoop();
}
我收到的错误是:警告:有符号和无符号整数表达式之间的比较(第 9 行)。我还尝试编写新代码,看看导致问题的原因:
#include<iostream>
#include <cstring>
void display1() {
char message[] = "Hello, world!";
for (int i = 0; i < sizeof(message) / sizeof(message[0]); i++)
std::cout<<message[i];
}
int main() {
display1();
}
这段代码运行得非常好。为什么第一个代码不能正常工作?
EDIT:根据 Cyber 的回答,我将循环更改为:
for (unsigned int i = 0; i < sizeof(message) / sizeof(message[0]); i++)
But the OpenGL代码没有达到预期的效果,即显示“Hello, world!”窗口中的消息。它只是创建一个窗口,顶部写有“OpenGL hello 程序”,没有其他内容。