Люди скажите как нормально сделать динамическое освещение?
Делаю вот как:
'Рисую стену
g_d3ddevice.SetTexture 0, WallTex 'текстура стены
g_d3ddevice.DrawPrimitiveUP D3DPT_TRIANGLESTRIP, 2, VERT(i * 4), Len(MAPVERT(0))
g_d3ddevice.SetTextureStageState 0, D3DTSS_TEXCOORDINDEX, 0
g_d3ddevice.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1
g_d3ddevice.SetTextureStageState 0, D3DTSS_COLORARG1, D3DTA_TEXTURE
g_d3ddevice.SetTextureStageState 0, D3DTSS_COLORARG2, D3DTA_CURRENT
g_d3ddevice.SetTextureStageState 1, D3DTSS_TEXTURETRANSFORMFLAGS, 2
g_d3ddevice.SetTextureStageState 1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION
g_d3ddevice.SetTextureStageState 1, D3DTSS_ADDRESSU, D3DTADDRESS_BORDER
g_d3ddevice.SetTextureStageState 1, D3DTSS_ADDRESSV, D3DTADDRESS_BORDER
g_d3ddevice.SetTextureStageState 1, D3DTSS_COLOROP, D3DTOP_MODULATE
g_d3ddevice.SetTextureStageState 1, D3DTSS_COLORARG1, D3DTA_TEXTURE
g_d3ddevice.SetTextureStageState 1, D3DTSS_COLORARG2, D3DTA_CURRENT
g_d3ddevice.SetTextureStageState 1, D3DTSS_ALPHAOP, D3DTOP_SUBTRACT
g_d3ddevice.SetTextureStageState 1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE
g_d3ddevice.SetTextureStageState 1, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE
g_d3ddevice.SetRenderState D3DRS_ALPHABLENDENABLE, 1
g_d3ddevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
g_d3ddevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
g_d3ddevice.SetTexture 0, WallTex
g_d3ddevice.SetTexture 1, SpLight 'пятно света на черном фоне и черный цвет в альфа канале
D3DXMatrixTranslation Mtrx, 0, 0, -0,008 ' сдвигаю стену немного вперед и рисую еще раз
g_d3ddevice.SetTransform D3DTS_WORLD, Mtrx
g_d3ddevice.DrawPrimitiveUP D3DPT_TRIANGLESTRIP, 2, VERT(i * 4), Len(MAPVERT(0))
'восстановление исходных параметров
g_d3ddevice.SetRenderState D3DRS_ALPHABLENDENABLE, 0
g_d3ddevice.SetRenderState D3DRS_SRCBLEND, 1
g_d3ddevice.SetRenderState D3DRS_DESTBLEND, 1
g_d3ddevice.SetTextureStageState 1, D3DTSS_COLOROP, 0
g_d3ddevice.SetTexture 1, Nothing
Что-то не нравится мне этот способ. Может можно как-то более рационально это сделать?