学海网 文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > IT/计算机 > OpenGL文字绘制

OpenGL文字绘制

介绍OpenGL中关于文字绘制的方法,包括汉字的绘制

OpenGL文字输出2009年05月26日 星期二 13:47

OpenGL是一个3D图形界面,在它上面显示文字有别于在Windows图形环境下显示文字。在OpenGL上文字需要一些特殊的方法,因为在3D图形界面上,有平面文字、3D文字之分。特别是汉字的显示要麻烦一些,因为OpenGL的底层不支持汉字的双字节编码。 本文的解决方案可以实现三种不同方式的文字显示:

常规文字
这种文字显示是一种高效能的、以位图方式绘制字体的方法,它采用了一种平面图形的方法,所以显示的是平面文字。只可惜,这个平面文字显示方法不能支持汉字。

3D文字
OpenGL中文字也可以作为3D对象来显示。这种3D文字可以缩放、旋转、贴图,有其它3D对象的所有特性。我们在程序还加入了对双字节汉字的特殊处理,所以它也能显示立体汉字。

平面汉字
OpenGL平面汉字。基本原理是:在系统内部建立一个确定字体的设备场景(MDC),用GDI方式将文字在设备场景中形成单色位图,再用OpenGL的平面位图显示函数glBitmap(…)将文字显示出来。

以下是源码:

//GLFont.h----------------------------------------------------------------------

// GLFont.h: interface for the CGLFont class.

#if !defined(AFX_GLFONT_H__88F1F000_50F5_452A_B95E_60ED83712FA5__INCLUDED_)
#define AFX_GLFONT_H__88F1F000_50F5_452A_B95E_60ED83712FA5__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CGLFont
{
public:
void entext(float x,float y, LPCTSTR str,HFONT hFont,float r,float g,float b);
void c3dtext(LPCTSTR str,HFONT hFont,float z);
void Printfc3d(LPCTSTR strText,HFONT hFont,float z=0.05f);
void Printftext(int x, int y, LPCTSTR lpszText,HFONT hFont);
void settext(float x,float y,LPCTSTR str,HFONT Font,float r,float g,float b);

CGLFont();
virtual ~CGLFont();
protected:
HFONT hFont;
};

#endif


//GLFont.cpp----------------------------------------------------------------------

//////////////////////////////////////////////////////////////////////
#include "stdafx.h"

#include "GLFont.h"

//#ifdef _DEBUG
//#undef THIS_FILE
//static char THIS_FILE[]=__FILE__;
//#define new DEBUG_NEW
//#endif

//////////////////////////////////////////////////////////////////////
//unsigned int Base;
//////////////////////////////////////////////////////////////////////

CGLFont::CGLFont()
{
}
CGLFont::~CGLFont()
{
}
void CGLFont::entext( float x,float y, LPCTSTR str, HFONT hFont,
float r, float g, float b)
{ HDC hdc = wglGetCurrentDC();
SelectObject(hdc, hFont);
unsigned int Base = glGenLists(96);
wglUseFontBitmaps(hdc, 32, 96,Base);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glPushAttrib(GL_LIST_BIT);
glColor3f(r,g,b);
glRasterPos2f(x/100, y/100);
glListBase(Base - 32);
glCallLists(_tcslen(str), GL_UNSIGNED_BYTE, str);
glP

第1页

TOP相关主题

  • opengl绘制立方体
  • opengl绘制曲面
  • opengl绘制三角形
  • opengl绘制圆柱体
  • opengl 绘制坐标系
  • opengl 绘制球体
  • opengl显示文字
  • opengl 文字

我要评论

相关文档

  • OpenGL文字的几种常用绘制方法

    OpenGL文字的几种常用绘制方法_计算机软件及应用_IT/计算机_专业资料。三堆场景中绘制和标注文字OpenGL提供的一个强大功能.但是由于国内资料的短缺,几乎所有的 ...

  • 【论文】基于SDL和OpenGL实时绘制中文字体

    基于SDL和OpenGL实时绘制中文字体_专业资料。为了能够在三维场景当中实时的将中文字体绘制在指定的位置上,提出了基于SDL和OpenGL跨平台图形库,采用生产者-消费者模型...

  • OpenGL汉化研究】OpenGL如何显示文字

    OpenGL汉化研究】OpenGL如何显示文字_IT/计算机_专业资料。【游戏汉化与分析...开始。 前面已经说过了,要显示字符,就需要通过操作系统,把绘制字符的动作装到...

  • 第七章opengl文字显示

    OpenGL 文字显示 文字显示 (一)显示英文 OpenGL 并没有直接提供显示文字的功能,...需要在第一次调用的时候初始化, 以后就可以很方便的调用这些显示列表来绘制 ...

  • opengl图形填充、正余弦曲线绘制、字符输出(C++)

    opengl图形填充、正余弦曲线绘制、字符输出(C++)_工学_高等教育_教育专区。opengl图形填充、正余弦曲线绘制、字符输出实验五 1、实验目的和要求 了解且掌握图形填充...

  • Opengl显示文字

    Opengl 显示文字 (一下代码复制到 VC6.0 编译器中将会只有一行,不会自动换行...(MAX_CHAR); // 把每个字符的绘制命令都装到对应的显示列表中 ...

  • OpenGL入门学习之十六——在Windows系统中显示文字

    OpenGL入门学习之十六——在Windows系统中显示文字_IT/计算机_专业资料。OpenGL...(MAX_CHAR); // 把每个字符的绘制命令都装到对应的显示列表中 ...

  • openGL输出简单文字

    openGL输出简单文字_计算机软件及应用_IT/计算机_专业资料。#include <gl/glut... openGL图形的旋转与平移 openGL画矩形 openGL橡皮筋技术 openGL棋盘填充...

  • 3 OpenGL绘图

    多媒体开发与编程 3 OpenGL图形绘制 ? 基本概念 ? 基于Glut开发OpenGL程序 ? ...功能包括物体描述、平移、旋转、缩放、 光照、纹理、材质、像素、位图、文字处理...

  • OpenGL绘制Bmp图片

    OpenGL绘制Bmp图片_工学_高等教育_教育专区。二维坐标 OpenGL 一、定义二维坐标的尺度: void gluOrtho2D(left, right, top, bottom); 四个参数分别代表(左下角 ...

站点地图 | 文档上传 | 侵权投诉 | 手机版
新浪认证  诚信网站  绿色网站  可信网站   非经营性网站备案
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.xuehai.net All Rights Reserved.  email
返回顶部