游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2149|回复: 4

bitmapfont 问题,多谢

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-2-21 21:55:00 | 显示全部楼层 |阅读模式
用wglUseFontBitmaps()和wglUseFontOutlines()显示字符串;由于后者有参数gmf,可以
通过gmf[string[loop]].gmfCellIncX 相加,算得整个字符串的长度,
请问bitmap怎么解决这个问题。我是新手,万分感谢

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2006-2-22 11:19:00 | 显示全部楼层

Re:bitmapfont 问题,多谢

GLuint pos_o[4], pos_n[4];
显示字符之前:
glGetIntegerv( GL_CURRENT_RASTER_POSITION, pos_o );
显示字符之后:
glGetIntegerv( GL_CURRENT_RASTER_POSITION, pos_n );
GLuint char_width = pos_n[1] - pos_o[1];

此方法也适用于显示一行字符后获得总长度。

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-2-22 16:14:00 | 显示全部楼层

Re: bitmapfont 问题,多谢

多谢楼上的,
我想居中显示一行字符,就是知道一个位置坐标,想这个字符串的中间
在这个坐标上。不知道怎么实现?

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2006-2-26 14:37:00 | 显示全部楼层

Re:bitmapfont 问题,多谢

GLuint line_left, line_right; //要输出文字的区域,值由你设定。
GLuint text_width; //文本的宽度,计算方法后述

GLuint line_width = line_right - line_left;
GLuint x = ( line_width - text_width ) / 2 + line_left;
glRasterPos2ui( x, y ); // y由你设定
//输出字符串

--------------------------------------------
获得文本宽度的方法:(WIN32 API)

BOOL GetTextExtentPoint32(
  HDC hdc,              // handle to DC
  LPCTSTR lpString,  // text string
  int cbString,          // characters in string
  LPSIZE lpSize        // string size
);

示例:
HDC hdc = wglGetCurrentDC( );
LPCTSTR str = _T("你要输出的字符串");
int len = _tcslen( str );
SIZE temp; // 接受逻辑尺寸

if( GetTextExtentPoint32( hdc, str, len, &temp ) )
{
    text_width = temp.x;
}

2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-6-9 16:29:00 | 显示全部楼层

Re: bitmapfont 问题,多谢

怎样使wglUseFontOutlines绘制的字体居中显示呢,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 16:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表