Модератор: Mikle
D3DXMatrixScaling m1, pp1, pp1, pp1
d3dDevice.SetTransform D3DTS_WORLD, m1
lellel писал(а):а вот еще проблема:.
Device.SetRenderState D3DRS_NORMALIZENORMALS, true
Public Sub ReflRender()
Dim i As Integer
'''
D3DXMatrixLookAtLH Mtrx1, vec3(5, 2, 5.8), vec3(5 + Sin(CamAngle + Pi) * Cos(CamDiff), 2 + Sin(CamDiff), 5.8 + Cos(CamAngle + Pi) * Cos(CamDiff)), vec3(0, 1, 0) 'матричный поворот, чтобы камера смотрела перпендикулярно зеркалу
d3dDevice.SetTransform D3DTS_VIEW, Mtrx1
For i = 0 To Mips - 1 'Mips, это количество MIP уровней у текстуры
Set CubeC = TexR1.GetSurfaceLevel(i) 'TexR1 это сама текстура, которая будет использоваться как карта отражений
d3dDevice.SetRenderTarget CubeC, CubeZ, 0 'это некоторые поверхности, нужные для снимка.. взято из примера [b]Mikle[/b]..
d3dDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, &H687090, 1, 0
RenderDop 'это рендер окружающей стекло сцены
Next i
d3dDevice.SetRenderTarget MainC, MainZ, 0 'то взято из примера [b]Mikle[/b], если я правильно понял восстановление изначальных поверхностей
d3dDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, &H687090, 1, 0
D3DXMatrixPerspectiveFovLH Mtrx1, 1, Form3D.ScaleHeight / Form3D.ScaleWidth, 0.1, 100
SetCamera 'функция, которая устанавливает камеру в положенное для нее место
'''
RenderDop 'это рендер окружающей стекло сцены
d3dDevice.SetRenderState D3DRS_ALPHABLENDENABLE, 1
d3dDevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
d3dDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
d3dDevice.SetRenderState D3DRS_BLENDOP, D3DBLENDOP_ADD
d3dDevice.SetRenderState D3DRS_ZWRITEENABLE, 0
d3dDevice.SetRenderState D3DRS_TEXTUREFACTOR, &H11808080
d3dDevice.SetTextureStageState 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1
d3dDevice.SetTextureStageState 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR
d3dDevice.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_MODULATE
d3dDevice.SetTextureStageState 0, D3DTSS_COLORARG1, D3DTA_TEXTURE
d3dDevice.SetTextureStageState 0, D3DTSS_COLORARG2, D3DTA_TFACTOR
'отрисовка самого стекла
d3dDevice.SetTexture 0, TexR1
d3dDevice.SetStreamSource 0, vBufPortS, vSizePortS
d3dDevice.SetVertexShader vFlagPortS
d3dDevice.DrawPrimitive D3DPT_TRIANGLELIST, 0, 2
d3dDevice.SetRenderState D3DRS_ZWRITEENABLE, 1
End Sub
Public Sub ReflInit()
Dim Size As Long
Size = 1024
Mips = 2 'глобальная переменная Long
Set MainC = d3dDevice.GetRenderTarget
Set MainZ = d3dDevice.GetDepthStencilSurface
Set CubeZ = d3dDevice.CreateDepthStencilSurface(Size, Size, D3DFMT_D16, D3DMULTISAMPLE_NONE)
Set TexR1 = d3dx.CreateTexture(d3dDevice, Size, Size, Mips, D3DUSAGE_RENDERTARGET, D3DFMT_R5G6B5, D3DPOOL_DEFAULT)
End Sub
Public CubeC As Direct3DSurface8
Public CubeZ As Direct3DSurface8
Public MainC As Direct3DSurface8
Public MainZ As Direct3DSurface8
Public Mtrx1 As D3DMATRIX
Public TexR1 As Direct3DTexture8
Dim Mips As Long
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1