OpenGl中的glColor3f亮度很小

时间:2019-01-02 18:34:24

标签: c opengl freeglut opengl-1.x

我在OpenGl中的代码有问题 我需要做一个游戏引擎。 我使用freeglut库。 我使用旧的Visual Studio版本进行了此练习,但没有出现此问题。但是在Visual Studio 2017中,属性glColor3f的显示亮度很小。为什么?

这是我用来显示文本的代码:

char instrucciones3[100];
sprintf_s(instrucciones3, "PULSA 'ESC' SI QUIERES SALIR");
char *res4 = instrucciones3;
glColor3f(0.0f, 1.0f, 1.0f); //This is the problem, I dont have alpha but the brightness is low.
glRasterPos3f(1.0f, 5.0f, 0.0f);
drawString(res4);

char instrucciones2[100];
sprintf_s(instrucciones2, "PULSA 'H' PARA COMENZAR PARTIDA ");
char *res3 = instrucciones2;
glColor3f(0.0f, 1.0f, 1.0f);
glRasterPos3f(-10.0f, 5.0f, 0.0f);
drawString(res3);

更新:

This is the result of my code

亮度太低了,但是型号不错。我在新代码中放入了glColor3f(0.0f, 1.0f, 1.0f);,但是结果是一样的。


Update2 这是我的displayMe func:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0, 3, 15, 0, 0, 0, 0, 1, 0);

glRotatef(yaw, 0.0, 1.0, 0.0);
glRotatef(pitch, 1.0, 0.0, 0.0);
glRotatef(roll, 0.0, 0.0, 1.0);
GLfloat lightpos[] = { 5.0, 15., 5., 0. };
glLightfv(GL_LIGHT0, GL_POSITION, lightpos);

2 个答案:

答案 0 :(得分:2)

固定功能灯光模型也应用于文本。这将导致任意结果,具体取决于当前的灯光设置和当前的法向矢量属性。在绘制文本之前,必须先禁用照明。

Model model = new Model("exemple");

int[] loads = new int[]{4, 3, 3};
IntVar n1 = model.intVar("n1", loads);
IntVar n2 = model.intVar("n2", loads);
IntVar n3 = model.intVar("n3", loads);  
//Contsraints :
model.allDifferent(n1,n2,n3).post();

,并且必须在绘制几何图形之前启用它

glDisable(GL_LIGHTING);

glColor3f的参数必须是[0.0,1.0],

范围内的浮点值。
glEnable(GL_LIGHTING);

glColor3f(0.0f, 1.0f, 1.0f); 相比,其中参数是[0,255]范围内的整数值。

glColor3ub

请参见OpenGL Specification (Version 2.0) - 2.7. VERTEX SPECIFICATION; page 21

  

设置RGBA颜色的命令是

glColor3ub(0, 255, 255);
     

“颜色”命令有两个主要变体:void Color{34}{bsifd ubusui}( T components ); void Color{34}{bsifd ubusui}v( T components ); Color3。四个值版本设置所有四个值。这三个值版本将R,G和B设置为提供的值。 A设置为1.0。
  [...]带浮点数的Color和SecondaryColor命令的版本   值可接受名义上介于0.0和1.0之间的值
  [...]

Color4

答案 1 :(得分:0)

您在某处使用纹理吗?如果是这样,请尝试在绘制其他东西之前禁用纹理化。