Я делаю некоторый базовый код для библиотеки OpenGL и пытаюсь изменить цвет фона с помощью glClearColor (), но цвет окна всегда черный.
#include <stdlib.h>
#include <GL/glew.h>
#include <GL/glut.h> // we use GLUT !
#pragma comment(lib, "glew32.lib")
float gpBGColor[4] = { 1.0, 0.0, 0.0, 1.0 };
void myinit(void) {
//glClearColor(gpBGColor[0], gpBGColor[1], gpBGColor[2], gpBGColor[3]); // white
//glClear(GL_COLOR_BUFFER_BIT);
}
void mydisplay(void) {
glClearColor(gpBGColor[0], gpBGColor[1], gpBGColor[2], gpBGColor[3]); // white
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//glFlush();
}
void mykeyboard(unsigned char key, int x, int y) {
switch (key) {
case 27: exit(1); break;
case 'Q':
case 'q': gpBGColor[0] += 0.01f; break;
}
glutPostRedisplay();
}
int main(int argc, char* argv[]) { // typical structure of OpenGL programs
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(300, 300);
glutInitWindowPosition(100, 100);
glutCreateWindow("sample");
glutDisplayFunc(mydisplay); // callback registration
glutKeyboardFunc(mykeyboard);
glewInit();
myinit(); // initialization
glutMainLoop();
return 0; // never executed !
}
Кроме того, когда я устанавливаю размер окна (200, 200) или (400, 400) или (800, 800), цвет окна всегда белый. Я не знаю причину, почему это так работает.