PDA

View Full Version : Revolution3D



Stoney
04-04-2006, 04:47 PM
I wonder if someone has tried out this Revolution3D (http://www.revolution3d.de)-engine. A delphi port can be downloaded here (http://www.revolution3d.de/mambo/index.php?option=com_docman&Itemid=54&task=view_category&catid=81&order=dmname&ascdesc=DESC)
Does anyone know how to use this engine? Is it compatible to Delphi's VCL or do I have to use the Windows API?
I just had a look at the demos from the SDK, which are really nice. :D

Stoney
06-04-2006, 04:18 PM
Slowly I know how to use Revolution3D. It is just compatible with Delphi 6 and higher, FreePascal or Lazarus had not been tested, perhaps I'll do that later.
My results (after a lot of hard work ;) ): It is possible to activate R3D via VCL or API, both ways are quite easy. And I got it to show a simple dark-blue window, which can be closed through pressing ESC key.
Here is a little code to play with (for API development):


program R3D_Initialization;

uses Windows,
SysUtils,
R3DClasses,
R3DEnum,
R3DType;

var Engine: ^TR3D_Engine;
Pipeline: ^TR3D_Pipeline;
Control: ^TR3D_Control;

bRun: Boolean = True;
iHandle: Integer;


Procedure R3DMain(hWnd: HWND);
Var bFreeMode: Boolean;
Begin
New(Engine);
New(Pipeline);
New(Control);

If MessageBox(hWnd, 'Do you want to init without the dialog?', '', mb_YesNo) = ID_YES Then bFreeMode := True Else bFreeMode := False;

If MessageBox(hWnd, 'Do you want to run this tutorial in fullscreen mode?', '', mb_YesNo) = ID_YES Then Engine.SetRenderTarget(hWnd, R3DRENDERTARGET_FULLSCREEN) Else Engine.SetRenderTarget(hWnd, R3DRENDERTARGET_WINDOW);

If Engine.InitializeMe&#40;bFreeMode&#41; < 0 Then Halt&#40;0&#41;;

While bRun Do
Begin
If Control.Keyboard_GetKeyState&#40;R3DKEY_ESCAPE&#41; Then bRun &#58;= False;

Pipeline.Renderer_Clear;
Pipeline.Renderer_Render;

Pipeline.Renderer_Display;
End;

Engine.TerminateMe;


// Free all those pointers
Dispose&#40;Engine&#41;;
Dispose&#40;Pipeline&#41;;
Dispose&#40;Control&#41;;
End;

begin
// Needed in Delphi to load Revolution3D correctly
// Exit, if libary is not loaded
If Not R3DLibLoad Then Halt&#40;0&#41;;

// Create window and set handle to Revolution3D
iHandle &#58;= R3DWindowCreate&#40;'Revolution3D Initialization', 0, 0, 640, 480, False&#41;;
R3DMain&#40;iHandle&#41;;


// Needed in Delphi to unload Revolution3D correctly
R3DLibUnLoad;
end.

I think I will soon add a simple tutorial on my homepage.

Firlefanz
07-04-2006, 06:30 AM
What Api does it use? DX9?

What features does it have?

The screens look good but I cannot find a good description of the engine and its features and usage, but it looks quite interesting. :D

Firle

Stoney
07-04-2006, 06:52 AM
Yes, it is using DirectX9. And the Revolution3D delphi port can be combined with Clootie's DirectX headers.

The features I know about:
- 2D sprites handling
- Lightmaps
- Bumpmaps
- Blending
- Loads all kinds of models (MD2, 3DS, ...)
- Primitives
- Text output
I think there are even more features, but these listed features are shown with the samples from the SDK.

Well, the usage with Delphi is quite a problem: There are no samples or tutorials of how to use Revolution3D with Delphi or I hadn't find any. :?

Firlefanz
07-04-2006, 08:22 AM
Too bad. Let us know about your own project or if you find any good Delphi samples. :wink:

Firle