Archived

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.

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 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...

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

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;	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

1. 1
Rutin
26
2. 2
3. 3
JoeJ
20
4. 4
5. 5

• 9
• 9
• 9
• 46
• 41
• Forum Statistics

• Total Topics
631750
• Total Posts
3002059
×