On Mon, 30 Mar 2009 10:59:42 -0500 "Boyd Stephen Smith Jr." <b...@iguanasuicide.net> wrote:
> In <20090330125126.28021...@vivalunalitshi.luna.local>, Micha Feigin wrote: > >I'm trying to figure out how to capture the screen using opengl. I tried > >glReadPixels but if I understand correctly it is reading from the current > >opengl context (the visible part of the current opengl window) and not the > > full screen. Is there a way to make the current opengl context the full > > screen instead of an opengl window, or is there another way to do this? > > I've only got a passing familiarity with OpenGL, but I'll guess... > > If you are doing a screen capture via OpenGL, you'll probably want to create > your own context (with direct GLX calls), rather than using the one provided > by your widgets API (Qt/Gtk). You will probably need to base it off of the > root window. Thanks, for some reason that gave me the right search words for google, found a currently working solution using glx under linux (will still need to find a matching version for windows). If anyone is interested or can tell me if what I'm doing is the most efficient way for this, or much more importantly, how do I trasnlate this code to copy the data into a PBO (pixel buffer object if I'm not mistaken) then here is the code (without the error checking for clarity) Display *dpy = XOpenDisplay(NULL); Window root = DefaultRootWindow(dpy); GLint att[] = {GLX_RGBA, None}; XVisualInfo *vis = glXChooseVisual(dpy, 0, att); GLXContext glc = glXCreateContext(dpy, vis, NULL, true); glXMakeCurrent(dpy, root, glc); glReadBuffer(GL_FRONT); unsigned char *data = new unsigned char[WIDTH*HEIGHT*3]; glReadPixels (0, 0, WIDTH, HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, data); -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org