yeah it can, and you need multi-texturing extensions unless you do multipass, I've got code if you're not sure how to use it.
here's the texture set up func I use for blending etc. rip out the blending modes you need. which is no blending for layer 1(base texture, or disable lighting if you want to blend it in with vertex colors) then use modulated blending for the lightmap layer.
Method Setup()
'Local Profile:TProfile
' If profilerOn
' Profile:TProfile = Profiler.Enter("Texture Setup")
' EndIf
glMatrixMode(GL_TEXTURE)
glLoadIdentity()
glScalef(Scal[0],Scal[1],Scal[2])
glTranslatef(Pos[0],Pos[1],Pos[2])
glRotatef(Rot[2],0,0,1)
' glRotatef(Rot[0],1,0,0)
' glRotatef(Rot[1],0,1,0)
If Texture.BindBlend[BoundUnit]<>BlendMode
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
Select BlendMode
Case T_Normal
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB,GL_REPLACE)
Case T_Blend
glTexEnvf(GL_TEXTURE_ENV,GL_COMBINE_RGB,GL_BLEND)
Case T_modulated
glTexEnvf(GL_TEXTURE_ENV,GL_COMBINE_RGB,GL_MODULATE)
Case T_Add
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB,GL_ADD)
Case T_Dot3
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB,GL_DOT3_RGB)
Case T_Dot3Alpha
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB,GL_DOT3_RGBA)
Case T_Subtract
glTexEnvf(GL_TEXTURE_ENV,GL_COMBINE_RGB,GL_SUBTRACT)
Default
MainError.Invoke("Illegal Texture Blend Mode Specified In Texture.Setup() Mode:"+BlendMode,True)
End Select
Texture.BindBlend[BoundUnit] = BlendMode
EndIf
' If FilterMode<>Texture.BindFilter[BoundUnit]
Select FilterMode
Case T_None
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST)
Case T_BiLinear
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)
Case T_TriLinear
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)
Default
MainError.Invoke("Illegal Filter mode in Texture.Setup() Mode:"+FilterMode,False)
End Select
Texture.bindfilter[boundunit] = filtermode
' EndIf
If ColorS<>Texture.BindColorS[boundunit]
Texture.BindColorS[boundunit]=ColorS
glTexEnvf(GL_TEXTURE_ENV,GL_RGB_SCALE_ARB,ColorS)
EndIf
glMatrixMode(GL_MODELVIEW)
' If ProfilerOn
' Profile.Leave()
' EndIf
End Method
|