c - OpenGL中的glColor3f亮度很小
问题描述
我在 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);
更新:
亮度这么低,但模型很好。我glColor3f(0.0f, 1.0f, 1.0f);
输入了新代码,但结果是一样的。
Update2 这是我的 displayMe 函数:
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);
解决方案
固定功能灯光模型也适用于文本。这将导致任意结果,具体取决于当前灯光设置和当前法线向量属性。您必须在绘制文本之前禁用照明。
glDisable(GL_LIGHTING);
并且您必须在绘制几何图形之前启用它
glEnable(GL_LIGHTING);
参数glColor3f
必须是 [0.0, 1.0] 范围内的浮点值,
glColor3f(0.0f, 1.0f, 1.0f);
与 相比glColor3ub
,其中参数是 [0, 255] 范围内的整数值。
glColor3ub(0, 255, 255);
请参阅OpenGL 规范(2.0 版)- 2.7。顶点规格;第 21 页
设置 RGBA 颜色的命令是
void Color{34}{bsifd ubusui}( T components ); void Color{34}{bsifd ubusui}v( T components );
颜色命令有两个主要变体:
Color3
和Color4
. 四个值版本设置所有四个值。三个值版本将 R、G 和 B 设置为提供的值;A 设置为 1.0。
[...] 采用浮点值的 Color 和 SecondaryColor 命令版本接受名义上介于 0.0 和 1.0 之间的值。
[...]GL Type Conversion ubyte c/(2^8 − 1) byte (2c + 1)/(2^8 − 1) ushort c/(2 16 − 1) short (2c + 1)/(2^16 − 1) uint c/(2^32 − 1) int (2c + 1)/(2^32 − 1) float c double c
推荐阅读
- scala - 当我尝试将 base64 转换为图像时,出现以下错误无法解析重载方法“写入”
- python - 从文本文件中提取数字
- java - 正则表达式 - isMediaFile
- javascript - 刷新页面后如何保留复选框并在会话中保持值
- android - couchbase syncgateway 是否支持使用 access_token 而不是 id_token 登录?
- mongodb - 如何获取不在集合中的元素?
- python - 在Odoo中,在编写控制器时,http和https有什么区别?有一个错误
- mysql - SELECT 语句优化 MySQL
- php - 如何根据从上一页收到的 ID 生成页面(php/sql)
- python - Django admin 自定义降序和升序字段