[vtkusers] c# port of VTK
Sean McInerney
seanm at nmr.mgh.harvard.edu
Mon Aug 2 15:51:29 EDT 2004
Andy,
I am sure that a C# port could be very popular. Are you using a
wrapping approach or are you parsing C++ code to generate C#?
Also, I am unsure of where you are encountering the problem that you
describe in your message. Could you provide a few specific instances?
-Sean
Andy Somogyi wrote:
> Hello VTK users
>
> I am in the process of completly porting VTK (4.2) to c#.
> As this is c#, it can be used nativly from any .net language.
>
> When finished, it will be freely availble under the existing VTL lisence.
>
> My question is this:
>
> The c++ version of VTK uses length 3 arrays to represent a vector in 3
> space.
> This is fine in c++ because you can create arrays on the stack.
>
> It is not possible to create a managed array in c# on the stack, they
> are allways
> heap allocated and garbage collected. So using a large number of managed
> arrays, or
> creating large numbers of transitory arrays is very inefficient.
>
> The use of a 'value type' or a 'struct' in other words is far more
> effcient when
> large numbers of objects are involved as they are created on the stack
> and are not
> garbage collected.
>
> I have thought about using a raw double pointer (double*) instead of an
> managed array
> for all functions that use a vector (double[3]). This has the advantage
> of being very
> fast, but on the other hand, it is highly error prone, and a user of one
> of these functions
> must declare thier method 'unsafe'. I would suspsct that this would
> discourage many users.
>
> There are many good vector and matrix classes avaible for .net, such as
> the standard vector and
> matrix types that ship with directx 9.
>
> So my question to any perspective vtk.net users is would you prefer all
> existing methods
> that currently accept a c++ style array (double[3]) accept the following
> in the new
> c# port:
>
> 1: managed array (new double[3])
> advantages:
> 1.1 farmiliar syntax
> 1.2 do not have to declare 'unsafe' code
> disadvanteges:
> 1.2 very ineffcient both in terms of size and performance
>
> 2: unmanaged pointer (double*)
> advanteges:
> 2.1 very effecient
> disadvantes:
> 2.2 error prone
> 2.3 need to pin a managed array or use 'stackalloc'
>
> 3: use a 'Vector3' value type
> advanteges
> 3.1 very effcient
> 3.2 very safe
> 3.3 easy to convert to and from a 'double*'
> disadvantes:
> 3.3 introduces unfarmiliair syntax
>
> Any ides or oppinions would be greatly appcieated
>
> thanks
>
>
>
> _______________________________________________
> This is the private VTK discussion list. Please keep messages on-topic.
> Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list