2016-08-11 2 views
-1

Je travaille sur un projet qui crée un programme de peinture en utilisant OpenGL et GLUT en C++. Jusqu'à présent, j'ai un menu de couleur sur le côté gauche et maintenant j'essaie de faire un menu d'outils sur le côté droit, mais je ne peux pas comprendre comment l'obtenir sur la droite.Création d'un menu de droite sur C++ en utilisant openGL

C'est ce que j'ai jusqu'à présent:

int inwindow(int x, int y) 
{ 
    return (x > WLEFT && x < WRIGHT && y > WBOTTOM && y < WTOP); 
} 

static float colormenu[][8] = {{Red}, {Orange}, {Yellow}, {Green}, {Cyan}, {Blue}, {Purple}, {Black}}; 

int incolormenu(int x, int y) 
{ 
    return (x >= 0 && x <= MENUWIDTH && y >= 0 && y <= HEIGHT); 
} 

int colormenuindex(int x, int y) 
{ 
    if(!incolormenu(x, y)) 
     return -1; 
    else 
     return(y/BOXHEIGHT); 
} 


static float toolmenu[][6] = {{Pencil}, {Line}, {Box}, {Rectangle}, {Circle}, {FCircle}}; 

int intoolmenu(int x, int y) 
{ 
    return (x >= 0 && x <= MENUWIDTH && y >= 0 && y <= HEIGHT); 
} 

int toolmenuindex(int x, int y) 
{ 
    if(!intoolmenu(x, y)) 
     return -1; 
    else 
     return(y/BOXHEIGHT); 
} 

void drawSketch() 
{ 
    int i; 

    glClearColor(Grey, 1); 
    glClear(GL_COLOR_BUFFER_BIT); 

    glColor3f(Black); 

    for(i = 0; i < NCOLORS; i++) 
    { 
     glColor3f(colormenu[i][R], colormenu[i][G], colormenu[i][B]); 
     glRecti(1, BOXHEIGHT * i + 1, MENUWIDTH - 1, BOXHEIGHT * (i + 1) - 1); 
    } 

    for(i = 0; i < NCOLORS; i++) 
    { 
     glColor3f(toolmenu[i][Pencil], toolmenu[i][Line], toolmenu[i][Box]); 
     glRasterPos3f(0.2, -0.8, -1.5); 
    } 

    glFlush(); 
} 
+0

Ce que 'glRasterPos3f' est censé faire dans ce cas? – Mars

+0

Que sont R, G et B dans 'glColor3f'? Et pourquoi appelez-vous le second en utilisant des valeurs non liées? Quel résultat es-tu en train d'attendre? – Mars

Répondre

0

Je ne sais pas si vous êtes prêt à utiliser une solution tierce, mais je l'ai utilisé le projet suivant avec des résultats vraiment bons.

NanoGUI Github Project