2016-05-12 53 views
-2

我想在按下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();} 
+0

您認爲文檔有問題嗎? – orbitcowboy

回答

2

使用glClearColor設置背景顏色。在你的代碼中,你只能在main()中設置一次,但不要在其他地方更改它,所以它不會改變。當您想要更改時,您需要撥打glClearColor

+1

措辭令人困惑,我並沒有指示他們應該只設置一次,我說的是OP只設置了一次,因此沒有改變。我會編輯 – vu1p3n0x

+0

非常感謝 – Super

+0

我想使它成爲子菜單,但它不起作用http://textuploader.com/5bkzg這是問題https://i.imgsafe.org/0e7b771.png – Super