Listing 1

int main(int argc, char** argv) {  
    RenderDevice renderDevice;
    renderDevice.init();

    TextureRef logo = Texture::fromFile("G3D.jpg");
    
    RealTime now = System::time();
    RealTime endTime = System::time() + 10;

    while (now < endTime) {
        now = System::time();
        renderDevice.beginFrame();
            renderDevice.clear();

            GCamera camera;
            camera.setPosition(Vector3((endTime - now) / 5 - 1,1,5));
            camera.lookAt(Vector3::zero());

            renderDevice.setProjectionAndCameraMatrix(camera);
            renderDevice.setTexture(0, logo);
            renderDevice.beginPrimitive(RenderDevice::TRIANGLES);
                for (int i = 0; i < 3; ++i) {
                    double a = G3D_TWO_PI * i / 3;
                    renderDevice.setTexCoord(0, 
                        (Vector2(cos(a), -sin(a)) + Vector2(0.5, 0.5)));
                    renderDevice.sendVertex(Vector3(cos(a), sin(a), 0) * 2);
                }
            renderDevice.endPrimitive();
            renderDevice.enableLighting();
              renderDevice.setLight(0, GLight::
                          directional(Vector3(1,1,1), Color3::white()));
              Draw::axes(&renderDevice);
            renderDevice.disableLighting();
        renderDevice.endFrame();
    }    
    return 0;
}