OpenGL
После масштабирования объекта (функция glScale) он неправильно освещается истоником света. Это проблема моей видеокарты, или OpenGL ?
Если речь идет о странных аномалиях освещения, связанных с масштабированием матрицы modelview (glScale...), то это проблема OpenGL вообще. Дело в том, что умножению на modelview подвергаются не только координаты вершин, но и векторы нормалей. По идее, их нужно только поворачивать в пространстве, но они такжесдвигаются и масштабируются (glTranslate..., glScale).
Для исправления проблемы нужно включать автоматическую ренормализацию нормалей
glEnable(GL_NORMALIZE),
то есть если после умножения на modelview вектор-нормаль состоит из компонент (x,y,z), то GL_NORMALIZE делает следующее:
L=sqrt(x2 + y2 + z2) - вычисляется длина вектора нормали, затем x=x / L y=y / L z=z / L
Естественно, это снижает скорость (sqrt, все-таки)
Поэтому в OpenGL 1.2 введено расширение GL_EXT_rescale_normal, которое просто делит нормаль на соответствующие элементы матрицы modelview, и получает правильное значение вектора нормали. Деление быстрее нормализации, а результат будет тот же.