2011-07-30 108 views
1

我正在为iPad编写3D图形游戏。我使用大量用线条绘制的线框表面。iOS中的OpenGL ES 1.1灯光线的奇怪行为

直到最近,我总是关闭照明,当我画线;我推断线条没有法线,所以照明不起作用。为了好玩,我试着打开灯光来画线,看看会发生什么,我得到了一些令人惊讶的结果。

线条以白色绘制,并且在照明关闭时显示为白色,但打开照明时会变为彩色。具体来说,线条变成最后一个敌人的颜色来进入屏幕。我也认识到与光源位置有关的白色效应。

起初我以为我的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(); 
} 

回答

0

好了,我的工作了。

glColor4f用于设置颜色被关闭。打开照明时,OpenGL使用对象的材质属性来设置颜色。当我绘制线条时,材质属性被设置为敌人的材质属性,我需要做的就是为线条设置。