- Код: Выделить всё
Public Function BOXFR2(x1 As Single, y1 As Single, z1 As Single, x2 As Single, y2 As Single, z2 As Single) As Boolean
Dim i As Integer
For i = 0 To 5
If m_frustumPlanes(i).m_normal.x * x1 + _
m_frustumPlanes(i).m_normal.y * y1 + _
m_frustumPlanes(i).m_normal.z * z1 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
If m_frustumPlanes(i).m_normal.x * x2 + _
m_frustumPlanes(i).m_normal.y * y1 + _
m_frustumPlanes(i).m_normal.z * z1 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
If m_frustumPlanes(i).m_normal.x * x1 + _
m_frustumPlanes(i).m_normal.y * y2 + _
m_frustumPlanes(i).m_normal.z * z1 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
' continue;
If m_frustumPlanes(i).m_normal.x * x2 + _
m_frustumPlanes(i).m_normal.y * y2 + _
m_frustumPlanes(i).m_normal.z * z1 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
If m_frustumPlanes(i).m_normal.x * x1 + _
m_frustumPlanes(i).m_normal.y * y1 + _
m_frustumPlanes(i).m_normal.z * z2 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
If m_frustumPlanes(i).m_normal.x * x2 + _
m_frustumPlanes(i).m_normal.y * y1 + _
m_frustumPlanes(i).m_normal.z * z2 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
If m_frustumPlanes(i).m_normal.x * x1 + _
m_frustumPlanes(i).m_normal.y * y2 + _
m_frustumPlanes(i).m_normal.z * z2 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
If m_frustumPlanes(i).m_normal.x * x2 + _
m_frustumPlanes(i).m_normal.y * y2 + _
m_frustumPlanes(i).m_normal.z * z2 + m_frustumPlanes(i).m_distance > 0 Then GoTo L1
'continue;
BOXFR2 = False
Exit Function
L1:
Next
BOXFR2 = True
End Function
Вот нашел если еще может кому надо.
А есть в VB аналог continue и вообще что он делает, вроде продолжает выполнение цикла перепрыгивая через то что после него или нет.
И что тут можно оптимизировать. Функция довольно тормозная.
Будет ли толк, если написать на VC++, скомпилить в DLL и вызвать из VB. Или без толку это.