Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将用户输入添加到";“创建菜单”;_C++_Opengl_User Input - Fatal编程技术网

C++ 如何将用户输入添加到";“创建菜单”;

C++ 如何将用户输入添加到";“创建菜单”;,c++,opengl,user-input,C++,Opengl,User Input,我想在使用鼠标右键单击调用菜单时添加该选项,以通过用户输入更改颜色值。 我尝试了cin>>RED1但它不识别cin 我不知道如何使这项工作,除非通过给一个固定的值来改变颜色。我如何在这种情况下实现用户输入 #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string> #define _USE_MATH_DEFINES #include <cmath&g

我想在使用鼠标右键单击调用菜单时添加该选项,以通过用户输入更改颜色值。 我尝试了
cin>>RED1但它不识别
cin

我不知道如何使这项工作,除非通过给一个固定的值来改变颜色。我如何在这种情况下实现用户输入

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#define _USE_MATH_DEFINES
#include <cmath>
#include <gl/glut.h>

GLfloat angle = 0.0;
static int RED1 = 1, GREEN1 = 3, BLUE1 = 0, RED2 = 2, GREEN2 = 2, BLUE2 = 1;
static int MENUsub, Face1, Face2, i, LINES;
static int SELECIONA = 2, f = 0, VALOR = 0, SOLID = 0, LINE = 1;
static double NoFaces = 32, ihc, cordX = 1, cordY = 1, cordZ = 1;

void init(void)
{
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glShadeModel (GL_FLAT);
}

void creatMENU(void)
{
    Face1 = glutCreateMenu(MENU);

    glutAddMenuEntry("Change Colour Values", 1);

    MENUsub = glutCreateMenu(MENU);

    glutAddSubMenu("Face 1", Face1);

    glutAddMenuEntry("Sair", 0);
    glutAttachMenu(GLUT_RIGHT_BUTTON);
}

void MENU (int OPT)
{
    if(OPT == 0)
    {
        exit(0);
    }
    else
    {
        switch(OPT);
        {
        case 1 :
            //cin>> RED1;
            RED1 = 2;
            break;
        }
    }
}
#包括
#包括
#包括
#包括
#定义使用数学定义
#包括
#包括
GLfloat角度=0.0;
静态int RED1=1,GREEN1=3,BLUE1=0,RED2=2,GREEN2=2,BLUE2=1;
静态int菜单b、面1、面2、i、线;
静态整数选择a=2,f=0,VALOR=0,SOLID=0,LINE=1;
静态双端面=32,ihc,cordX=1,cordY=1,cordZ=1;
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GLU平面);
}
void创建菜单(void)
{
面1=创建菜单(菜单);
戊二醛(“改变颜色值”,1);
MENUsub=glutCreateMenu(菜单);
子菜单(“面1”,面1);
戊二醛(“Sair”,0);
谷胱甘肽功能表(GLUT_右键);
}
无效菜单(int OPT)
{
如果(OPT==0)
{
出口(0);
}
其他的
{
开关(OPT);
{
案例1:
//cin>>红色1;
RED1=2;
打破
}
}
}

据我所知,您需要自己处理

使用
glutKeyboardFunc
获取键盘输入,并使用
GLUTBitMapCharter
将文本打印到窗口

因此,您可以保留一个全局bool
changingColor
,当选择菜单项时,您可以切换到
true
。然后可以使用矩形或其他东西渲染输入。您可能有一个看起来有点像这样的键盘功能:

std::string colorInput;

void keyboard(unsigned char key, int x, int y) {
    if (changingColor) {
        colorInput += key;
    }
 }
在渲染函数中,类似于:

if (changingColor) {
    glRasterPos3f(x, y, z);
    for (auto it = colorInput.begin(); it != colorInput.end(); ++it) {
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *it);
    }
}

  • 据我所知,你需要自己处理

    使用
    glutKeyboardFunc
    获取键盘输入,并使用
    GLUTBitMapCharter
    将文本打印到窗口

    因此,您可以保留一个全局bool
    changingColor
    ,当选择菜单项时,您可以切换到
    true
    。然后可以使用矩形或其他东西渲染输入。您可能有一个看起来有点像这样的键盘功能:

    std::string colorInput;
    
    void keyboard(unsigned char key, int x, int y) {
        if (changingColor) {
            colorInput += key;
        }
     }
    
    在渲染函数中,类似于:

    if (changingColor) {
        glRasterPos3f(x, y, z);
        for (auto it = colorInput.begin(); it != colorInput.end(); ++it) {
            glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *it);
        }
    }
    

  • 这是一个选择,但没有达到我想做的。现在我要用你建议的方法。:)这是一个选择,但没有达到我想做的。现在我要用你建议的方法。:)