Я вижу странное поведение, которое я не могу понять. По какой-то причине, когда я применяю масштаб (по оси z), моя текстурная сетка полигона становится затемненной, как если бы освещение внезапно отключилось или диффузный цвет был установлен на 0. Если я отменил масштаб (чтобы масштабирование вернулось назад до 0), затем цвет становится ярким и ярким в цвете.Почему масштабирование GLKit вызывает затемнение цвета/освещения?
* Обновление с дополнительной информацией. * Яркость кажется прекрасной, когда значения z на моих вершинах имеют исходные/инициализированные значения. Но когда я масштабируюсь вдоль оси z, это когда цвет становится тусклым (не совсем темным, но заметным изменением яркости). Я использую индексный буфер для рендеринга.
Что может вызвать этот «глюк»?
код связанный с этим здесь:
float aspect = fabsf(self.view.bounds.size.width/self.view.bounds.size.height);
GLKMatrix4 projectionMatrix = GLKMatrix4MakePerspective(GLKMathDegreesToRadians(60.0f), aspect, 0.1f, 100.0f);
self.effect.transform.projectionMatrix = projectionMatrix;
// Compute the model view matrix for the object rendered with GLKit
GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 15.0f, -90.0f);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, rotationAngle, 0, 1, 0);
// where g_depthScale is a value that increases based on a slider control.
modelViewMatrix = GLKMatrix4Scale(modelViewMatrix, 0.1f, 0.1f, g_depthScale);
self.effect.transform.modelviewMatrix = modelViewMatrix;
Наиболее распространенной ошибки, чтобы произвести это при использовании шкалы вы также масштабировать нормали. Нормализуйте нормали, чтобы они всегда имели длину 1. –
@Matic. Преобразуйте этот комментарий в ответ, и награда достается вам. – AlvinfromDiaspar
ОК. Я включил glEnable (GL_NORMALIZE) во время инициализации. Теперь вся текстура полностью черная. Это совершенно неожиданно! – AlvinfromDiaspar