The Tulse Luper Journey

Thursday, January 4. 2007
I am a big fan of the english avantgarde director Peter Greenaway, who made the films (among many others)

Now Peter Greenaway has an exciting new project called The Tulse Luper Journey, which is more than only a film. It is a story about a fictive man called Tulse Luper (who already appeared in some of Greenaways previous works), who was imprisoned for his whole life - mistaken for someone important, a spy, a lover, an artist, a writer and an observer. Luper has packed a total of 92 suitcases in his life reflecting his subjective view of the history of the 20th century. The complete project includes three feature films, a TV series, 92 DVDs, CD-ROMs, and books.

The Tulse Luper Journey also contains an online game which is still going. You can win a Tulse Luper DVD box and a journey round the world.

Finally: New Magnum Developer Release

Thursday, December 7. 2006
OpenGL
As I already promised in this blog and in some emails to various people, I prepared a new developer release 0.4 of my framework "Magnum". It already contains a lot of changes and supports SCons for building it.

I also packed another archieve containing all data sets that are used for the demos - unfortunately you really need it in order to build the framework and all examples using the build scripts.

Among the changes are:
  • SCons as build system.

  • A much better directory structure.

  • Much more pure virtual interface classes.

  • XML parser and DOM-like document model.

  • HTTP Server functionality.

  • The skeleton of a meta-compiler for reflection and more.

  • Lots of other changes that even are not documented in the changelog

I am also thinking about publishing a copy of my subversion repository online, so you can follow the development and access the most current version - but I am not sure about that and I currently don't have enough time to set up a replication mechanism.

Gigabit Ethernet for SGI Fuel

Wednesday, November 29. 2006
Workstations
Recently I got hands on an SGI Fuel, and I plan to use it for development (as soon as I ported my project to Linux - in other words, it will take a while). The Fuel offers some standard 64bit PCI expansion slots, and even supports some standard PCI cards. You can find a list of (inofficially) supported cards at Nekochan.

For myself, first I installed an M-Audio Revolution 7.1 card, which runs out-of-the-box. The next step was to install a gigabit ethernet card, as I have all my home directories stored on a central NAS Raid server. But this was not so easy, because of two problems: First the number of supported gigabit cards is rather low (and they are expensive), and they only work with a small kernel hack. But finally I got my hands onto two Compaq NC7770 Gigabit Server Adapter for 19EUR each. I installed one of the cards into my Fuel and followed the hacking instructions again found at Nekochan.

Now I have working a cheap but powerful gigabit ethernet card in my Fuel, the same trick should also work on an Octane with a PCI card cage and an Origin. Maybe I will try to install the second card into my O200 some time.

What am I doing?

Monday, November 27. 2006
Programming
I really tried hard to post an entry onto this blog once a month - almost 9 months ago. Now I will retry to populate this blog again with some information. So what am I doing at the moment? I am still working a lot on Magnum in my spare time. Expect an intermediate release soonwith lots of changes inside and outside; among those are:

  • Switch to subversion as a source control system.

  • Switch to scons as a build system.

  • Removal of NVI (non virtual interface) pattern from API.

  • Basic functions for a generic meta-compiler.

  • Added some kind of unittests.

  • Lots of API refacturing and bugfixing.


As you can see, although I haven't updated Magnum for a while, I really have been busy making it a better framework. I guess the rework of the API and the final metacompiler won't be ready for some time, so there will be an intermediate release (I don't want to say "development release", as all releases are mainly for developers) giving a glimpse of the new features mentioned above. And I promise to you, the metacompiler will be really hot!

Inheritance, Constructors, Virtual Methods and typeid

Wednesday, May 3. 2006
C++
When working with inheritance and virtual methods, there might be some surprises when one tries to call a virtual method inside a constructor - and this is the reasons why one should never ever call virtual methods inside a constructor or inside a destructor.

Consider the following simple code

class A {
public:
  A() {
      printf("A::A() calls ");
      f();
  };
  ~A() {
      printf("A::~A() calls ");
      f();
  };
  virtual void f() {
      printf("A::f()\n");
  };
};


class B : public A {
public:
  B() {
      printf("B::B() calls ");
      f();
  };
  ~B() {
      printf("B::~B() calls ");
      f();
  };
  virtual void f() {
      printf("B::f()\n");
  };
};


void main(void) {
  B obj;
  obj.f();
};


Continue reading "Inheritance, Constructors, Virtual Methods and typeid"

Another World - Hires Version

Monday, April 17. 2006
Gaming
For all those of you who remember the fantastic game "Another World" by Eric Chahi from 1991, there is a new hi-res version out for Windows. You can download a shareware version and upgrade it to the full game for only 7 EUR! Don't miss that opportunity, at least you should check out the free version in order to get an impression of one of most atmospheric games from the old days.

VBOs or Display Lists

Tuesday, April 11. 2006
OpenGL
Today, there was the question if VBOs are really as fast as display lists in OpenGL. Normally one would expect that VBOs should be at least as good as the old methods, but it seems that depending on the batch size and on the number of batches, the opposite might be true. I found a page with a small tool for measuring performance. At least on NVidia cards, VBOs do not seem to be the ideal solution for static geometry, whereas on ATI ther performance of VBOs should be almost equal to display lists.

So maybe I have to include another render path in Magnum using display lists...

New cast operators with additional features

Friday, April 7. 2006
C++
C++ already has a rich set of casting operatos, ranging from old-style C casts, over static_cast, dynamic_cast and the almost-never-to-be-used reinterpret_cast. Sometimes it might be convenient to have something similar like a dynamic_cast but with another behaviour if the cast fails. For example one might want to get an exception if a specific cast is not possible.

It turns out that this is pretty easy using templates with the following code

template<class T,class S> T* throwing_cast(S* s) {
   T* result = dynamic_cast<T>(s);
   if (!result)
     throw bad_cast_exception();
   return result;
}

ClassA* a = new ClassB();
ClassB* b = throwing_cast<ClassB>(a);

But we still can do better than this, because we might want to configure which exception should be thrown on a casting failure. The code above can be easily modified to:

Continue reading "New cast operators with additional features"