GDI bmp to texture
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 -
if you have a hdc and a bitmap you can draw to the hdc and the stuff should end up on the bitmap...
use
CreateDIBSection
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
GdiFlush
to finish up any waiting gdi stuff
then use the bits from the bitmap to update a existing opengl texture, with
glTexSubImage2D
that should be in the right direction for something to work
use
CreateDIBSection
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
GdiFlush
to finish up any waiting gdi stuff
then use the bits from the bitmap to update a existing opengl texture, with
glTexSubImage2D
that should be in the right direction for something to work
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.
------------
- outRider -
Edited by - outRider on August 4, 2001 10:01:06 PM
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; TEXTMETRIC tm; HBITMAP hBmp; BITMAPINFO BmpInfo; 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
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement