Вот функция из DLL написанной на VC++ 6.0, которая просто включает свет.
- Код: Выделить всё
__stdcall int dllrender(LPDIRECT3DDEVICE8 DEV)
{
DEV->SetRenderState(D3DRS_LIGHTING, 1);
return 0;
}
Вот ее объявление и вызов на VB 6.0
- Код: Выделить всё
Public Declare Function dllrender Lib "render.dll" (ByVal Dev As Direct3DDevice8) As Long
Sub Render()
...
D3DDevice.SetRenderState D3DRS_LIGHTING, 0
Call dllrender(D3DDevice)
Call RenderModel(...
...
End Sub
После выполнения dllrender, свет включается, все нормально работает.
1. Вообще, я правильно делаю, можно ли так и насколько стабильно это будет работать? (может это как-то по другому делается или чего не так в сишном коде, если что поправьте)
2. Почему параметр надо передавать, как ByVal (если ByRef, прога вылетает без всяких сообщений об ошибках). Dev - вроде указатель, которые обычно передаются как ByRef.