2016-05-12 8 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

Формулировка была запутанной, я не приказывал им, что они должны только установить ее один раз, я утверждал, что ОП только установил ее один раз, и поэтому она не менялась. Я отредактирую – vu1p3n0x

+0

Я очень благодарен – Super

+0

Я хочу сделать это подменю, но это не работает http://textuploader.com/5bkzg, это проблема https://i.imgsafe.org/0e7b771.png – Super

Смежные вопросы