订阅所有文章
文章搜索

高级搜索这是社么?这是顶尖最新推出的文章增强型搜索功能!
全网 本站
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> VC >> 文章正文

OpenGL 下的文字显示

作者:bluebohe  来源:CSDN  点击  更新:2006-12-19 7:07:02  编辑: 画王w  字体

    一直以来,OpenGL状态下的文字显示都是一个问题,本文使用嵌套显示列表的方式进行OpenGL状态下的字符串的显示。

     有以下几点需要注意:

     1:本程序显示按照给定的高度和文字的位置显示某一种字体的文字,其中一些字体的参数定义在OpenGLText内部给定,可以随意将它抽出来。如果将代码用于实际应用中,建议文字的文字间距自己设定,也可以随意添加文字的倾斜角、旋转角度、定位方式等等参数。

     2:wglUseFontOutlines函数的第五个参数表示文字的精度(弦偏差),一般设置成零,但这样缺省的做法会导致文字太粗糙,可以将它设置成一个比较小的数,以提高文字显示的精确度,但这样会增加内存的占用量。

     3:如果文字的高度比较小,文字的线条可能会出现断裂的现象,影响美观,解决这类问题有以下几种方式:(1)使用OpenGL反走样技术;(2)把文字的轮廓用线条勾勒出来;(3)在文字的Draw成员函数中多次调用glCallList函数,每次调用向周围平移一个像素,这样的话会使文字的线条断裂问题大为改观,速度也是三种方式中最快的。

本文的详细代码在这里,欢迎参考:下载源程序

应用方式如下:

         COpenGLText text;

         COpenGLText text2;

         text2.m_dX=0;

         text2.m_dY=200;

         glLoadIdentity();

         glClear(GL_COLOR_BUFFER_BIT);

        glColor4f(0.0f, 0.0f, 1.0f, 1.0f);

         text.Draw("宋体");

         text2.Draw("楷体_GB2312");

         glFlush();

类的声明和实现如下:

#include <string>

using namespace std;

class COpenGLText 

{

public:

     //构造文字

     COpenGLText();

     virtual ~COpenGLText();

     //绘制制定字体的文字,字体只在第一次绘制时进行设置,之后可以传入空值

     void Draw(char *strFontName);

     //释放文字所占空间

     void Free();

     //文字字符串

     string m_str;

     //字符串高度

     double m_dHeight;

     //字符串位置

     double m_dX;

     double m_dY;

protected:

     BOOL GenList();

     BOOL GenCharsLists(char *strFontName);

     int m_iDisplayList;

};

//////////////////////////////////////////////////////////////////////

// COpenGLText Class

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

COpenGLText::COpenGLText()

{

     m_dX=0;

     m_dY=0;

     m_str="abc中国";

     m_dHeight=100;

     m_iDisplayList=0;

}

COpenGLText::~COpenGLText()

{

     Free();

}

BOOL COpenGLText::GenCharsLists(char *strFontName)

[1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  •      
    热门文章  
    推荐文章  
    相关文章    
     发表评论
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备05002835号