XdrawString+double buffer
Brian Paul
brian.paul at tungstengraphics.com
Mon Jul 31 08:55:28 PDT 2006
dragoran wrote:
> Brian Paul wrote:
>
>> dragoran wrote:
>>
>>> Hello
>>> I am working on a wrapper around glxSwapbuffers. I want to display
>>> text in openglapps.
>>> I have tryed many different things like textures,gldrawpixels, etc.
>>> but none of the works in all apps.
>>> ut2004 does not even like the gldrawpixel version.
>>> so I tryed using Xdrawstring which works in all of this apps but it
>>> flackers because of double buffering.
>>> how can I avoid this?
>>> here is my code, it simply displays "test" on the appwindow...
>>>
>>> void glXSwapBuffers(Display* dpy, GLXDrawable drawable) {
>>> #ifdef DEBUG
>>> fprintf(stderr,"about to draw hud ;)\n");
>>> #endif
>>> Colormap cmap;
>>> XColor c0, c1;
>>> cmap = DefaultColormap(dpy, 0);
>>> XAllocNamedColor(dpy, cmap, "red", &c1, &c0);
>>> XGCValues values;
>>> GC maingc=XCreateGC(dpy, drawable, 0 ,&values);
>>> XSetForeground(dpy, maingc, c1.pixel);
>>> XDrawString(dpy,drawable, maingc, 20, 50, "test",4);
>>> pglXSwapBuffers(dpy, drawable); }
>>
>>
>> It might work better to put the XDrawString() call after the
>> SwapBuffers().
>>
>> Also, you may need a glXWaitGL() call between them.
>>
>> -Brian
>>
>>
> hello
> now I have tryed with
> pglXSwapBuffers(dpy, drawable);
> glXWaitGL();
> XDrawString(dpy,drawable, maingc, 20, 50, "test",4);
> the only thing that this causes are lower framerates but teh flickering
> isn't gone
I guess the only flicker-free solution is to draw the text with OpenGL
commands prior to SwapBuffers(). Have you tried glWindowPos/glBitmap()?
-Brian
More information about the xorg
mailing list