PDA

View Full Version : Text rendering



blender
05-02-2002, 07:20 AM
I have made a small utility that loads from a bitmap all the characters and makes them textures.
Should I render the chars of a text string in polygons (2d) or how? Are there something better for these kind of things in openGl?

Morglum
05-02-2002, 08:03 AM
Yeah, do 2d rendering (glOrtho) and draw textured quads (1 textured quad per character). That's faster than glBitmap/glDrawPixels and gives you nice antialiasing/scaling/italic features. You can also do that in display lists so that rendering 1 whole string will be achieved in only 1 gl call (glCallLists).

mproso
05-02-2002, 09:33 AM
Use only one texture for all characters, that way when rendering textured quads you only have to change texture coordinates for every character(quad) and you dont waste time making unnecessary
glBindTexture calls.
Sorry if you are already doing this, it wasnt clear from your post.
Hope this helps.

blender
05-02-2002, 09:57 AM
Thanks for your post, I'll give a try for your ideas.

blender
05-03-2002, 09:47 AM
By the way, how much time does calling glBindTexture(..) take?
Is it faster to use one texture for all characters if the texture is 1024*256?

Robbo
05-03-2002, 12:37 PM
Thats a difficult question to answer. It depends on the drivers, overall texture load, amount of texture memory on the card etc. Basically, for a single character set, 1024x256 seems a bit large. It will take longer to initially bind (with glTexImage2D) but if it stays resident in video memory, it won't make a difference on the glBindTexture execution.

You can set the priority of this texture (its a hint) if you want the drivers to make an extra effort to keep it on the card.

blender
05-04-2002, 04:07 AM
You can set the priority of this texture (its a hint) if you want the drivers to make an extra effort to keep it on the card

How can I actually do this? With glPrioritizeTextures()? If so, what does the last parameter mean?

mproso
05-04-2002, 05:42 AM
Last parameter is floating-point value that is clamped to the range [0,1].
0 is lowest priority, 1 is highest priority.
If you want to prioritize just one texture it would go like this

GLfloat priority = 1.0f;
glPrioritizeTextures( 1, &your_texture_id, &priority);

If your texture is already bound you can also give hint with glTexParameter.
Look for these in glspec.
Hope this helps.