Quote Originally Posted by Sly
Unless you override some base methods in TObject, there is also no way to bulk-allocate a bunch of class instances. Each class instance must be created individually. That is horribly expensive when you might be talking about using a class for a vector or matrix. A mesh might have 10,000 vertices. That is a lot of needless overhead, and the time wasted can be noticed by the end user in longer load times.

As I said, this comes from having a commercial games development, and the amount of overhead in using TObject and strings rings alarm bells in my head.
Perhaps if you had the same experience with C/C++ (please, don't throw any rocks), you should know that creating a class for each primitive like point or vector might not be a very good idea considering the performance.

Many libraries I have seen and have worked with, including Asphyre (which I am developer of) use clases to represent a single-instance objects like Canvas and use records and record arrays to store points, vertices, normals, matrices and so on. In fact, in my Asphyre library, there are primitive storage classes like TVectorList, which stores an array of TVector4 records and have method like Transform, which receives a pointer to the matrix and then multiplies all vectors in array either using a multiplication procedure (which is not part of any class), or using a batch procedure, which uses SSE to transform all vectors. No offence, but I really think you should review the libraries and how they work before doing really serious claims.