我是靠谱客的博主 玩命曲奇,最近开发中收集的这篇文章主要介绍wglUseFontBitmaps/wglUseFontOutlines,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

GDI 显示文本

---- 调用wglGetCurrentDC()函数取得当前的设备上下文,使用TextOut函数显示文本,不过要注意在DoubleBuffer模式下,绘制函数要在glFinish()和 SwapBuffers(wglGetCurrentDC())函数之后调用,否则会产生闪烁,在绘制OpenGL结束之前使用GDI函数,要除去闪烁则只能使用SingleBuffer模式,具体函数如下:

void CTextView::DrawGdiText()
{
HDC  hdc=wglGetCurrentDC();
::SetBkMode( hdc, TRANSPARENT );
::SetTextColor( hdc, RGB(250,0,0) ); 
CString sState(“显示GDI文本。");
::TextOut(hdc,5,5,sState,sState.GetLength());
}

wglUseFontBitmaps
函数显示文字

----使用wglUseFontBitmaps()将ASCII字符装入显示列表,然后使用glCallLists()函数利用显示列表序列显示文本。wglUseFontBitmaps有四个参数,分别是当前使用的DC、从第几个ASCII字符起始装入列表、装入列表的ASCII字符数和起始的列表序号。glListBase()指定glCallLists执行的起始列表序列号。glCallLists()含有三个参数:执行列表序列的个数、列表值的类型和所要显示的文本。注意如果所要显示的文本是字符串,它所提供的信息是相对于起始装入ASCII字符的偏移量,因此最终所显示的ASCII字符是从glListBase()所指定的列表起始号在经过glCallLists()中偏移后的列表,因此wglUseFontBitmaps的从第几个ASCII字符起始装入列表参数、glListBase()指定的 glCallLists执行的起始列表序列号和glCallLists()中的所要显示的文本参数都可以影响最终显示结果。由于显示的是ASCII 字符,因此不能显示汉字。glRasterPos3f函数决定在 OpenGL视景体坐标系下的偏移。具体函数实现如下:

void CTextView::DrawListText()
{
	wglUseFontBitmaps(wglGetCurrentDC(),0,256,1000);
	glListBase(1000);
	glRasterPos3f(-5.0f,0.0f,0.0f);
	glCallLists(20,GL_UNSIGNED _BYTE,“Draw with List Text.");
}


wglUseFontOutlines 
函数显示三维文字

----wglUseFontOutlines使得OpenGL可以显示三维文字。它的用法与wglUseFontBitmaps函数大致相同,但是多了内插计算参数、字体深度、显示方式和装载字模的缓存四个参数,且只能显示TrueType字体,显示前应该先选择字体类型。具体函数实现如下:

void CTextView::Draw3DText()
{
	GLYPHMETRICSFLOAT agmf[256]; 	// create display lists for glyphs 0 through 255
					// with 0.1 extrusion and default deviation. 
					//The display list numbering starts at 1000   (it could be any number) 
	wglUseFontOutlines(wglGetCurrentDC(),   0,255,1000,0.3f,0.8f, WGL_FONT_LINES ,agmf);   
					// Set up transformation to draw the string  
	glTranslatef(-15.0f,0.0f,0.0f); 
	glScalef(4.0f, 4.0f, 4.0f);  	// Display a string  
	glListBase(1000);		// Indicates the start of display lists for the glyphs// Draw the characters in a string  
	glCallLists(26, GL_UNSIGNED_BYTE, “Draw outline list 3D text."); 
}


最后

以上就是玩命曲奇为你收集整理的wglUseFontBitmaps/wglUseFontOutlines的全部内容,希望文章能够帮你解决wglUseFontBitmaps/wglUseFontOutlines所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部