Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


GDI bmp to texture

This topic is 6192 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

What I''m trying to do is draw the 224 or so printable font characters onto a GDI bitmap and then take those and be able to create a texture out of the bitmap to draw on quads for text output. Now, I''ve never done ANYTHING with the GDI before, so I''m a little unsure about how to do that, or what functions to use. If someone could outline the steps needed, I''d appreciate it. ------------ - outRider -

Share this post

Link to post
Share on other sites
if you have a hdc and a bitmap you can draw to the hdc and the stuff should end up on the bitmap...

to make the DIB
then use
SelectObject(your_hdc, your_bitmap);
to select the bitmap for the hdc

then do whatever you want to the image

then call
to finish up any waiting gdi stuff
then use the bits from the bitmap to update a existing opengl texture, with

that should be in the right direction for something to work

Share this post

Link to post
Share on other sites
Here's what I have so far...

I created a font, then a bitmap based on the font's width and height. I was thinking that the bitmap would be 16 rows x 14 columns. Anyhow, I'm unclear about what to do next. Should I create a display list for every character and have each character textured on its own quad? I'm assuming that the raw image data is pointed to by pData, as that was the impression I got from the Platform SDK documentation. If anyone sees any problems with what I have so far I'd appreciate any tips you could offer.

short Font;
short FontDL;
HFONT hFont;
BYTE *pData;
BYTE i, ii;
RECT Rect;
char CurrentChar = 32;

hFont = CreateFont(-byHeight, 0, 0, 0, FW_NORMAL, false, false, false, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, FF_DONTCARE | DEFAULT_PITCH, pszFontname);
SelectObject(hDC, hFont);
GetTextMetrics(hDC, &tm);

memset(&BmpInfo, 0, sizeof(BITMAPINFO));
BmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
BmpInfo.bmiHeader.biWidth = 16 * tm.tmMaxCharWidth;
BmpInfo.bmiHeader.biHeight = 14 * tm.tmHeight;
BmpInfo.bmiHeader.biBitCount = 24;
BmpInfo.bmiHeader.biPlanes = 1;
BmpInfo.bmiHeader.biCompression = BI_RGB;
BmpInfo.bmiHeader.biSizeImage = BI_RGB;

hBmp = CreateDIBSection(hDC, &BmpInfo, DIB_RGB_COLORS, pData, NULL, NULL);
SelectObject(hDC, hBmp);

Rect.left = 0;
Rect.right = BmpInfo.bmiHeader.biWidth;
Rect.top = 0;
Rect.bottom = BmpInfo.bmiHeader.biHeight;

for (i = 0; i > 14; i++)
for (ii = 0; ii > 16; ii++)
DrawText(hDC, CurrentChar, 1, &Rect, DT_LEFT);


FontDL = glGenLists(192);

- outRider -

Edited by - outRider on August 4, 2001 10:01:06 PM

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!