如何更改背景颜色

how to change background color

本文关键字:颜色 背景 何更改      更新时间:2023-10-16

我想在按下RIGHT_BUTTON后更改窗口的背景色但它不起作用。

#include <glut.h>
#define RED 1
#define GREEN 2
#define BLUE 3
#define WHITE 4
#define BLACK 5
double re=0.0,ge=0.0,bl=0.0,al=0.0;
double anglex=0.0,angley=0.0;
double r=0.0,g=0.0,b=0.0;
void mydisplay(void)
{   glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(r,g,b);
    glutSolidTeapot(400);
        glEnd();
    glFlush();}
void Objectcolor (int k) {
 r=0.0,g=0.0,b=0.0;
 switch (k){
 case 1: {r= 1.0; 
glutPostRedisplay();
          break;}
 case  2: {g= 1.0; 
glutPostRedisplay();break;}
 case 3 :{b= 1.0; 
glutPostRedisplay();break;}
 case   4 : {r=1.0,g= 1.0,b=1.0; 
     glutPostRedisplay();break;
            }case   5: {r=0.0,g= 0.0,b=0.0; 
     glutPostRedisplay();break;}}}
void asd()
{int q =glutCreateMenu(Objectcolor);
glutAddMenuEntry("Red",RED);
glutAddMenuEntry("Green",GREEN);
glutAddMenuEntry("Blue",BLUE);
glutAddMenuEntry("white",WHITE);
glutAddMenuEntry("black",BLACK);
}

void Backgroundcolor(int k) {
switch (k){
case 1: {re= 1.0; 
glutPostRedisplay();    break;}
case 2:{ge= 1.0; 
glutPostRedisplay();    break;}
case 3: {bl= 1.0; 
glutPostRedisplay();    break;}
case  4: {re=1.0,ge= 1.0,bl=1.0,al=0.0; 
glutPostRedisplay();    break;}
case 5: {re=0.0,bl= 0.0,ge=0.0,al=0.0; 
glutPostRedisplay();    break;}}}
void back()
{int s =glutCreateMenu(Backgroundcolor);
glutAddMenuEntry("Red",1);
glutAddMenuEntry("Green",2);
glutAddMenuEntry("Blue",3);
glutAddMenuEntry("white",4);
glutAddMenuEntry("black",5);
glutAttachMenu(GLUT_RIGHT_BUTTON);}



    void main (int argc,char ** argv)
{
glutInit(& argc , argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(800,640);
glutCreateWindow("MY FIRST PROG");
glutDisplayFunc(mydisplay);
glClearColor(re,ge,bl,al);
glPointSize(4.0);
glOrtho(-800.0,800.0,-640.0,640.0,-1000.0,1000.0);
back();
glutMainLoop();}

使用glClearColor设置背景颜色。在您的代码中,您只在main()中设置了一次,但在其他任何地方都不会更改,因此它永远不会更改。当您想要更改glClearColor时,需要调用它。