Модератор: Mikle
a1ewka-gal4onok писал(а):А можно ли снизить нагрузку на процессор? Когда, например, шар не движется, и когда движется. Заранее спасибо! ::)
Mikle писал(а):Может не Reset, а Present?
А про событие Scroll мысль верная, еще можно вызывать из Paint, чтобы картинка не пропадала при перекрытии формы другими формами.
Private Sub HScroll1_Change()
d3dDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFFFFFF, 1, 0
D3DXMatrixRotationY Mtrx, QTime * 0.5
d3dDevice.SetTransform D3DTS_WORLD, Mtrx
d3dDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
End Sub
Private Sub VScroll1_Change()
d3dDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFFFFFF, 1, 0
D3DXMatrixRotationX Mtrx, QTime * 0.5
d3dDevice.SetTransform D3DTS_WORLD, Mtrx
d3dDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
End Sub
a1ewka-gal4onok писал(а):Ну наконец-то на моей улице праздник! Начинаю потихоньку понимать всю логику
Спасибо! Сделал так:
- Код: Выделить всё
Private Sub HScroll1_Change()
d3dDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFFFFFF, 1, 0
D3DXMatrixRotationY Mtrx, QTime * 0.5
d3dDevice.SetTransform D3DTS_WORLD, Mtrx
d3dDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
End Sub
Private Sub VScroll1_Change()
d3dDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFFFFFF, 1, 0
D3DXMatrixRotationX Mtrx, QTime * 0.5
d3dDevice.SetTransform D3DTS_WORLD, Mtrx
d3dDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
End Sub
Всё замечательно! Но есть ещё вопрос
А как сделать тогда так, чтобы при перемещении ScrollBar`ов шар вращался, причём так, чтобы не было видно мерцания, связанного с &HFFFFFFв d3dDevice.Clear?
d3dDevice.SetTransform D3DTS_WORLD, Mtrx
Private Type LineVert
x As Single
y As Single
z As Single
color As Long
End Type
Private Const LineFVF = D3DFVF_XYZ Or D3DFVF_DIFFUSE
Public Sub Draw3DLine(Vec1 As D3DVECTOR, Vec2 As D3DVECTOR, Optional color1 As Long = -1, Optional color2 As Long = -1)
Dim Vert(1) As LineVert
Vert(0).color = color1
Vert(0).x = Vec1.x
Vert(0).y = Vec1.y
Vert(0).z = Vec1.z
Vert(1).color = color2
Vert(1).x = Vec2.x
Vert(1).y = Vec2.y
Vert(1).z = Vec2.z
D3DDevice.SetRenderState D3DRS_LIGHTING, 0
D3DDevice.SetVertexShader LineFVF
D3DDevice.DrawPrimitiveUP D3DPT_LINELIST, 1, Vert(0), Len(Vert(0))
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1