glColor3f в OpenGl имеет небольшую яркость - PullRequest
0 голосов
/ 02 января 2019

У меня проблема с моим кодом в 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:

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 голосов
/ 02 января 2019

Вы где-нибудь используете текстуру?Если это так, попробуйте отключить текстурирование, прежде чем рисовать другую вещь.

0 голосов
/ 02 января 2019

Модель освещения с фиксированной функцией применяется и к тексту.Это приведет к произвольным результатам, в зависимости от текущих настроек освещения и текущего атрибута вектора нормали.Вы должны отключить освещение, прежде чем рисовать текст.

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.VERTEX СПЕЦИФИКАЦИЯ;стр. 21

Команды для установки цветов RGBA:

void Color{34}{bsifd ubusui}( T components );
void Color{34}{bsifd ubusui}v( T components );

Команда Color имеет два основных варианта: 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
...