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
将文本打印到窗口
因此,您可以保留一个全局boolchangingColor
,当选择菜单项时,您可以切换到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
将文本打印到窗口
因此,您可以保留一个全局boolchangingColor
,当选择菜单项时,您可以切换到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);
}
}
这是一个选择,但没有达到我想做的。现在我要用你建议的方法。:)这是一个选择,但没有达到我想做的。现在我要用你建议的方法。:)