The Black Screen Phenomenon
 

The first result of any graphics program is a black image.

It happens every time you write any graphics program. A two dimensional image processing program, a real time OpenGL scene viewer, or a photorealistic renderer -- it doesn't matter.

The first challenge is display.

You have to either save the image to a file and use a viewing program, or display the image interactively. Most file formats have strict syntactical rules. Mess up in any way, and you get a black or invalid image. Displaying an image interactively requires calling a library to create a window and display the image. Much more complicated than saving an image file. Even the simplest interactive image program is several hundred lines long.

In the case of three dimensional graphics, the problems are even more subtle. In addition to creating a window and displaying an image, you also need to create and aim a camera and lights, generate geometry and attach materials. Forgetting any of these will result in a completely black screen.

Rendering your own images can take hours. Sometimes you can wait overnight only to find a black image staring back in the morning.

Even using a high level library like OpenGL to handle visibility and shading, something always goes wrong. The lights or materials are all black. Or the camera is pointing in the wrong direction. Or the fog is enabled and completely blocks out the scene. Or the triangles were traversed in clockwise instead of counter-clockwise order and were all culled away for facing backwards.

OpenGL just makes it all happen in real time.

If you are writing your own renderer, the problems are much worse. Visibility algorithms are extremely complicated. Efficient and robust algorithms are gargantuan beasts from hell. The chances of not generating a black image are vanishing at best.

Why even try? After all, at least black images have no aliasing artifacts.