Simple Direct3d8/vb6 question...
Hi, I''m doing some sort of level editor for my game.
I have an input form(A normal vb6 Form) where i get the inputs from the user and then, the users press a command button to make a 3d preview. So it is then that i initialise my dx objects and evrything for fullscreen mode, but i want to be able to return to my previous input form after, whitout quitting the program...
How could I do this? I tried to Load/Unload Forms in certains orders, I tried not to kill the dx objects at the end but the screen would not return correctly.
it should work fine if your preview window is a seperate .frm; destroy the various DX objects and unload the form.
Leave the original one running in the background (as such), i.e. don''t "unload me" on the form after a "preview.show" type command.
I''ve done this for several editor like tools in VB6/D3D8. It is most definitely possible
Jack
Leave the original one running in the background (as such), i.e. don''t "unload me" on the form after a "preview.show" type command.
I''ve done this for several editor like tools in VB6/D3D8. It is most definitely possible
Jack
I''ve tried what you said but it doesnt work,it freez my computer on the last rendered screen
i''ll paste some code to see if I did a little mistake i''m not aware of
that''s how my 3d preview form is called
...
frmPreview.Show
End Sub
and this is how it''s destroyed:
...
Set D3DDevice = Nothing
Set D3D = Nothing
Set Dx = Nothing
Debug.Print "All Objects Destroyed"
Debug.Print "Highest frame rate achieved whilst running this demo was: " & FPS_Highest & " frames per second"
ShowCursor True
''//Final termination:
Unload frmPreview
End Sub -->this is the End Sub of the Private Sub Form_Load()
Could it be that i''m unloading this form while being in the formLoad Sub?
i''ll paste some code to see if I did a little mistake i''m not aware of
that''s how my 3d preview form is called
...
frmPreview.Show
End Sub
and this is how it''s destroyed:
...
Set D3DDevice = Nothing
Set D3D = Nothing
Set Dx = Nothing
Debug.Print "All Objects Destroyed"
Debug.Print "Highest frame rate achieved whilst running this demo was: " & FPS_Highest & " frames per second"
ShowCursor True
''//Final termination:
Unload frmPreview
End Sub -->this is the End Sub of the Private Sub Form_Load()
Could it be that i''m unloading this form while being in the formLoad Sub?
quote:Could it be that i''m unloading this form while being in the formLoad Sub?
possible, make sure you stick:
frmPreview.show
DoEvents
At the start of ''frmPreview'' Form_Load( ). This makes sure that VB loads up the form as needed before you start messing about with DirectX. Sometimes caught me out.
hth
Jack
Something must be missing, i sketched something for the main()...i've just put some boolean to know what to show:
Sub Main()
Inputing = True 'Are we Inputing??? or 3d previewing
MainRunning = True 'Program Runnning or Not
Unload frmPreview 'since i will be loading it,i will unload it first to prevent vb to tell me that the form is already loaded
notLoaded = True 'No form has been loaded yet
Do While MainRunning = True
If Inputing = True And notLoaded = True Then
notLoaded = False 'the inputform will be loaded
frmInput.Show 'show the input form
DoEvents
frmInput.WindowState = vbNormal 'make sure it's at the right state
ElseIf Inputing = False And notLoaded = True Then 'we are 3dpreviewing
notLoaded = False 'we are now loaded
frmInput.WindowState = vbMinimized 'minimize the input form so we cant see visual artifacts
Load frmPreview 'load the preview,theres a loop in there with do events dont worry
Unload frmPreview 'when i get out of the loop(with all dx objects = Nothing) i need to unload it
Debug.Print "frmPreview Onloaded"
End If
DoEvents
Loop
End Sub
By the way this is not final!!! it's only to test,i have a very big object model for my game so i'm testing before integrating it with the rest
[edited by - md_lasalle on April 14, 2004 5:08:45 PM]
Sub Main()
Inputing = True 'Are we Inputing??? or 3d previewing
MainRunning = True 'Program Runnning or Not
Unload frmPreview 'since i will be loading it,i will unload it first to prevent vb to tell me that the form is already loaded
notLoaded = True 'No form has been loaded yet
Do While MainRunning = True
If Inputing = True And notLoaded = True Then
notLoaded = False 'the inputform will be loaded
frmInput.Show 'show the input form
DoEvents
frmInput.WindowState = vbNormal 'make sure it's at the right state
ElseIf Inputing = False And notLoaded = True Then 'we are 3dpreviewing
notLoaded = False 'we are now loaded
frmInput.WindowState = vbMinimized 'minimize the input form so we cant see visual artifacts
Load frmPreview 'load the preview,theres a loop in there with do events dont worry
Unload frmPreview 'when i get out of the loop(with all dx objects = Nothing) i need to unload it
Debug.Print "frmPreview Onloaded"
End If
DoEvents
Loop
End Sub
By the way this is not final!!! it's only to test,i have a very big object model for my game so i'm testing before integrating it with the rest
[edited by - md_lasalle on April 14, 2004 5:08:45 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement