Я пишу игру с 3D-графикой для iPad.Я использую множество каркасных поверхностей, нарисованных линиями.
До недавнего времени я всегда выключал освещение, когда рисую свои линии;Я полагал, что линии не имеют нормалей, поэтому освещение не будет работать.Просто для забавы я попытался включить освещение, чтобы нарисовать свои линии, просто чтобы посмотреть, что произойдет, и я получил некоторые удивительные результаты.
Линии нарисованы белым и выглядят белыми при выключенном освещении, однако они поворачиваютсяокрашивается при включении освещения.В частности, линии меняются на цвет последнего врага, который появится на экране.Я также получаю эффект затухания белого, который, как мне кажется, как-то связан с положением источника света.
Сначала я подумал, что моя функция glColor4f настроена на цвет самого последнего врага, который былнарисован, но у меня определенно установлен белый цвет, и, кроме того, он рисуется белым при выключенном освещении.
Вот код, который рисует линии:
-(void)drawWireFrameWithData:(GLSurfaceData*)bufferData
{
glPushMatrix();
glDisableClientState(GL_NORMAL_ARRAY);
//glDisable(GL_LIGHTING);
glTranslatef(self.centrex, self.centrey, self.centrez);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glBindBuffer(GL_ARRAY_BUFFER, bufferData.vertexBuffer);
glVertexPointer(3, GL_FLOAT, 3 * sizeof(GLfloat), 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferData.lineIndexBuffer);
glDrawElements(GL_LINES, bufferData.lineIndexCount, GL_UNSIGNED_SHORT, 0);
glEnableClientState(GL_NORMAL_ARRAY);
//glEnable(GL_LIGHTING);
glPopMatrix();
}