2016-08-11 14 views
-1

Я работаю над проектом, который создает программу рисования с использованием OpenGL и GLUT на C++.Создание правого меню на C++ с использованием openGL

До сих пор у меня есть меню цветов с левой стороны, и теперь я пытаюсь сделать меню инструментов с правой стороны, но я не могу понять, как правильно это сделать.

Это то, что я до сих пор:

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

Что 'glRasterPos3f' должен делать в этом случае? – Mars

+0

Что такое R, G и B в первом 'glColor3f'? И почему вы вызываете второй, используя некоторые несвязанные значения? Какой результат вы ожидаете? – Mars

ответ

0

Не уверен, что если вы готовы использовать решение третьей стороны, но я использовал следующий проект с очень хорошими результатами.

NanoGUI Github Project