2017-08-30 7 views
-1

Ich habe einen Pathtracer in C++ geschrieben, und jetzt möchte ich den Renderprozess in Echtzeit anzeigen, also frage ich mich, was der einfachste/beste Weg ist, dies zu tun.C++ - Bild wird kontinuierlich aktualisiert

Grundsätzlich wird das gerenderte Bild nach jeder Iteration aktualisiert, so dass ich es nur abrufen, in einem separaten Fenster anzeigen und aktualisieren muss.

Ich habe über die Verwendung von DirectX nachgedacht, und es scheint, dass ich es wahrscheinlich auch mit OpenCV machen könnte, aber ich suche nur nach einer einfachen Methode, die nicht viel neuen Code hinzufügen muss.

Ich benutze C++ unter Windows.

+0

ich etwas ähnliches mit OpenGL und OpenCL tat. – zindarod

+0

Ist es ein 2D- oder 3D-Pfad-Tracer? – Asesh

Antwort

1

Wenn ich richtig verstehe, gibt Ihr Pfad-Tracer wahrscheinlich eine Farbe pro emittiertem Strahl aus? Wenn das der Fall ist, und Sie darüber nachdenken, das gerenderte Bild in einem separaten Fenster anzuzeigen, würde ich vorschlagen, SDL2 zu verwenden. Es gibt eine große Reihe von Tutorials zu Echtzeit-Grafiken mit C++ und SDL von Lazy Foo' Productions.

Auszug aus offiziellen SDL documentation genommen (ohne cruft benötigt Fenster zu initialisieren) in Bezug auf SDL_Surface, die Sie wahrscheinlich verwenden werden:

/* This is meant to show how to edit a surface's pixels on the CPU, but 
    normally you should use SDL_FillRect() to wipe a surface's contents. */ 
void WipeSurface(SDL_Surface *surface) 
{ 
    /* This is fast for surfaces that don't require locking. */ 
    /* Once locked, surface->pixels is safe to access. */ 
    SDL_LockSurface(surface); 

    /* This assumes that color value zero is black. Use 
     SDL_MapRGBA() for more robust surface color mapping! */ 
    /* height times pitch is the size of the surface's whole buffer. */ 
    SDL_memset(surface->pixels, 0, surface->h * surface->pitch); 

    SDL_UnlockSurface(surface); 
} 
Verwandte Themen