Board index » delphi » Future Path - where to from here?

Future Path - where to from here?


2003-10-07 07:45:35 AM
delphi41
I am currently working on a 3D visualization product, developed using Delphi
and OpenGL. 3D graphics performance is critical for our app.
We are hitting the address space limits of Win32 and are considering our
future options. I don't see a clear path forward for us, and am interested
in what others have to suggest.
Current platform Delphi 7 and OpenGL
Future Options:
1) Delphi .NET and DirectX 9. We would stay coding in Delphi, but have to
port all our OpenGL code to DirectX. We have serious concerns about the
performance implications, but this should move us onto 64 bit platforms as
soon as the 64 bit .Net runtime is available.
2) Port to C++, and stick with OpenGL. Change language to C++ and continue
generating native Win32/Win64 apps. We really don't like the idea of
changing to C++. I thought I had seen the last of it when I converted to
Delphi (v2) several years ago...
3) Pray Borland produce a native Win64 version of Delphi (for Opteron of
course)...
The first 2 options are obviously doable, but neither is really desirable.
The 3rd option is best and easiest for us, but we're relying on Borland to
produce something they have never announced, and frankly, I don't expect it
to happen.
Have I missed any options??
Alistair Ward
Forum 8 NZ Ltd.
 
 

Re:Future Path - where to from here?

Alistair,
Option 1 will have the most sex-appeal (after the new Option4). While
porting your code from OpenGL to DirectX will be some pain, the performance
might not suffer a lot. It will depend how much of 3D visualization is done
by your code vs. just calling an OpenGL or DirectX API. If you do a lot of
the visualization in your own code, then performance will definitely suffer
a lot, but if most visualization is done by the API, you will be almost be
as fast as before. The managed APIs for DirectX in .NET are just wrappers
for the native DirectX-API, that is why you wonīt see much of a speed
penalty.
Take a decent look on the port of Quake 2 to the .NET-platform at
www.codeproject.com/managedcpp/Quake2.asp. The .NET version of Quake
2 is almost as fast as the original native-code version (just about 20%
slower), and the reason is that most of the performance comes out of DirectX
and not out of the managed code.
Option 2: well, if you donīt like C++, then stay with Delphi and Option 1 or
Option 4 ...
Option 3: I donīt think that Borland is going to develop a Win64-Delphi
compiler anytime soon. They would actually have to develop two compilers,
one for AMD64 and one for Itanium64. I donīt think that Borland currently
sees a big enough market opportunity there to start developing these two
compilers. Maybe two years from now, but not today.
There is an Option4, similar to Option1.
Port to Delphi.NET, but keep working with OpenGL. Please donīt forget that
you can still call Native-APIs such as OpenGL from .NET managed code using
p-invoke etc. An easy way is to use some already existing OpenGL-wrappers
for .NET, such as Tao.OpenGL at sastools.com/b2/post/79394189 or CsGL
at sourceforge.net/projects/csgl. As soon as the .NET-runtime for
Win64 is released by Microsoft, your .NET application will then take
automatically advantage of 64bit (and the 64bit OpenGL-API on WinXP64, of
course).
Best regards,
Peter
"Alistair Ward" <XXXX@XXXXX.COM>writes
Quote
I am currently working on a 3D visualization product, developed using
Delphi
and OpenGL. 3D graphics performance is critical for our app.

We are hitting the address space limits of Win32 and are considering our
future options. I don't see a clear path forward for us, and am interested
in what others have to suggest.

Current platform Delphi 7 and OpenGL

Future Options:
1) Delphi .NET and DirectX 9. We would stay coding in Delphi, but have to
port all our OpenGL code to DirectX. We have serious concerns about the
performance implications, but this should move us onto 64 bit platforms as
soon as the 64 bit .Net runtime is available.

2) Port to C++, and stick with OpenGL. Change language to C++ and continue
generating native Win32/Win64 apps. We really don't like the idea of
changing to C++. I thought I had seen the last of it when I converted to
Delphi (v2) several years ago...

3) Pray Borland produce a native Win64 version of Delphi (for Opteron of
course)...

The first 2 options are obviously doable, but neither is really desirable.
The 3rd option is best and easiest for us, but we're relying on Borland to
produce something they have never announced, and frankly, I don't expect
it
to happen.

Have I missed any options??

Alistair Ward
Forum 8 NZ Ltd.


 

Re:Future Path - where to from here?

On Tue, 7 Oct 2003 12:45:35 +1300, "Alistair Ward"
<XXXX@XXXXX.COM>writes:
Quote
Have I missed any options??
Dark voodoo? :)
AWE perhaps?
msdn.microsoft.com/library/en-us/memory/base/address_windowing_extensions.asp
Of course, that limits you to win2k or above (but then NT4 is dead
soon, no?)
- Asbjørn
 

Re:Future Path - where to from here?

"Alistair Ward" <XXXX@XXXXX.COM>writes
Quote
I am currently working on a 3D visualization product, developed using
Delphi
and OpenGL. 3D graphics performance is critical for our app.

We are hitting the address space limits of Win32 and are considering our
future options. I don't see a clear path forward for us, and am interested
in what others have to suggest.

Current platform Delphi 7 and OpenGL

Very interesting. You are obviously an OpenGL expert, so forgive if you
have already considered the following.
Have you seen the OpenGL lessons on nehe.gamedev.net/ (left-hand
pane)? The reason I ask is because the first 30 or so of these lessons have
examples written in quite a few languages. (delphi, vc++, c#, python etc. )
So could actually test the C# examples versus the VC++ example for yourself
right now. Since the OpenGL would be coming from an unmanaged library
anyway (right?), all you would need is a 64-bit version of the libraries on
Win64... No doubt they are already to go.
So in this case, Delphi/.Net would not effect the speed of your OpenGl
processing at all... This would have to be tested of course. Bottom line,
you can stil use OpenGL in .NET on Win64, because the OpenGL functionality
would still be executing as "unmanaged" code.
If you do your own test of C# on OpenGL versus Delphi/VC++ on OpenGL, I
would be interested in your findings...
-dennis
 

Re:Future Path - where to from here?

thanks for the comments, and particularly the references to .NET OpenGL
wrappers.
I felt sure they should exist, but hadn't tracked them down...
Cheers,
Alistair Ward.
 

Re:Future Path - where to from here?

you are welcome.
Please let us know how you are going to proceed, and keep us updated on the
progress you make. I think it will be interesting for many of us to hear how
performance and memory extensive apps work on .NET.
Best regards,
Peter
"Alistair Ward" <XXXX@XXXXX.COM>writes
Quote
thanks for the comments, and particularly the references to .NET OpenGL
wrappers.

I felt sure they should exist, but hadn't tracked them down...

Cheers,
Alistair Ward.