2014-03-28 18 views
5

Ich mache einen OpenCL - Rycaster, und ich versuche, Pixel mit weniger Aufwand auf den Bildschirm zu blitten (jeder Tick zählt), so niedrig wie Aufruf von glClear() bei jedem Tick, dachte ich über die Erstellung eines Framebuffer, um es zu zeichnen und es an OpenCL zu übergeben, und dann blitting mit glBlitFramebuffer(), aber ich denke, dass das automatische Zeichnen auf den Bildschirm viel besser ist, also gibt es eine Möglichkeit, Pixel mit openCL zu zeichnen? Hacky stuff OKBlitzen mit OpenCL

Das Beste, was ich jetzt tun kann, ist zu überprüfen, wie glClear es tut ...

Antwort

7

Die übliche Vorgehensweise ist OpenCL zu verwenden, um ein gemeinsamer OpenGL/OpenCL-Textur-Objekt zu zeichnen (mit der erstellt clCreateFromGLTexture() Funktion) und zeichnen Sie dann mit OpenGL auf den Bildschirm, indem Sie ein Vollbild-Quad mit dieser Textur rendern.

Edit: Ich habe ein kleines Beispiel geschrieben, das OpenCL verwendet, um ein Mandelbrot-Fraktal zu berechnen und es dann direkt von der GPU auf den Bildschirm mit OpenGL rendert. Der Code ist hier: mandelbrot.cpp.

+1

Danke für das Beispiel, aber ich bin neugierig, würde ein Renderbuffer schneller sein als Sie Methode? + Muss ich den Bildschirm löschen? – Whiteclaws