glColor3i только черным - PullRequest
       8

glColor3i только черным

5 голосов
/ 24 октября 2010

Почему это рисует только черным?

 glPushMatrix();
 // Check the current color
 glColor3i(255, 0, 255);
 GLint currentColor[4];
 glGetIntegerv(GL_CURRENT_COLOR, currentColor);
 //currentColor[0] = 254, 1 = 0, 2 = 254, 3 = doesn't matter

 glBegin(GL_QUADS);
 glLineWidth(1);
  glVertex2f(0, 0);
  glVertex2f(WINDOW_WIDTH * .1, 0);
  glVertex2f(WINDOW_WIDTH * .1, WINDOW_HEIGHT);
  glVertex2f(0, WINDOW_HEIGHT);
 glEnd();
 glPopMatrix();

Ответы [ 2 ]

13 голосов
/ 24 октября 2010

По памяти, я думаю, что glColor3i использует значения цвета, которые масштабируются, чтобы охватить весь диапазон целых чисел.Следовательно, ваши 255 значений примерно равны нулю .....

Попробуйте вместо 2147483647.

3 голосов
/ 26 октября 2010

Все типизированные целочисленные точки входа gl имеют такое поведение диапазона. Варианты с плавающей точкой используют нормализованные значения: 0,0 - 1,0. glColor устанавливает текущий цвет вершины, который даже влияет на вывод во время обработки массива вершин, если glColorPointer не включен (если ваша версия GL использует именованные атрибуты вершины, а не общие, как в OpenGLES 2.x и выше).

Распространенными вариантами для glColor являются glColor {3,4} {u, b} и glColor {3,4} f.

В вашем случае вам следует придерживаться значений 0xFF и использовать glColor3ub (255, 0, 255) или, возможно, более простой glColor3f (1.0f, 0.0f, 1.0f).

Использование интегрального значения INT_MAX или ~ 2 миллиардов в сочетании с glColor3i () не очень хорошо читается.

...