HGE是不款不错的2D引擎渲染引擎...为什么这样说呢...
HGE目前没有物理,不过官方已经公布下一个版本将会有物理引擎进入.
因此该版本将会是一个非常好的2D引擎代表作..期待ing...
不过HGE是不支持中文的...这的确比较麻烦...
有没有解决办法呢?
答案是肯定的...
下面我就有来讲讲怎么让HGE支持中文...
我们先来搞定中文的显示,.再来搞定中文的输入.(输入将在下一篇文章上讲到)
先把我将"微妙的平衡"的一份代码弄下来改了一下.
hgefontc.h文件如下:
/*
*****************************************************
原作者:微妙的平衡
修改者:sf.tk
修改日期:2007-06-28
修改者 :Showlong
修改内容:去掉format的bug.
不需要处理多张字符纹理.
修改数据类型的不平衡.
修正SetBlendMode函数内部错误
填加获取串指定个数的长度
填加渲染长度截取
*************************************************** */
#pragma once
#include " hge.h "
#include " hgesprite.h "
#include < iostream >
class hgeFontCN
{
enum FONTCN_DATA
{
VALUE_FIX = 1 ,
HZ_H_MAX = 87 + VALUE_FIX, // 0xA1~0xF7 汉字编码范围高位(+1是给普通字母与标点符号留位置)
HZ_W_MAX = 95 , // 0xA0~0xFE 汉字编码范围底位
HZ_H_FIX = 0xA1 ,
HZ_W_FIX = 0xA0 ,
HZ_H_END = 0xF7 ,
HZ_W_END = 0xFE ,
ASCII_FIX = 0x20 ,
ASCII_END = 0x7f ,
ASCII_W = 6
};
struct FontCN_Head
{
char strHead[ 32 ];
char ImgFileNum; // 字模文件数
char firstImgFileName[ 40 ]; // 第一个字模文件名
DWORD dwStringCol;
DWORD dwStringRow;
DWORD dwFontWidth;
DWORD dwFontHeight;
public :
void SetData( char * head, char num, const char * firstImg, DWORD nCol, DWORD nRow, DWORD nFWidth, DWORD nFHeight);
};
struct FontCN_Frame
{
BYTE HZ[ 2 ];
BYTE fileIdx; // 所属的字模文件
WORD dwFontX;
WORD dwFontY;
public :
void SetData(BYTE h, BYTE l, BYTE idx, WORD fx, WORD fy);
};
public :
hgeFontCN( const char * filename); // 根据字体文件创建
~ hgeFontCN( void );
void Render( float x, float y, const char * string , int cutlen = 0 ); // 绘制字符串
void printf( float x, float y, const char * format, ...); // 绘制格式字符串
void SetColor(DWORD col){m_allSprite -> SetColor(col);} // 设置字体颜色
void SetZ( float z){m_allSprite -> SetZ(z);} // 设置Z缓冲
void SetBlendMode( int blend){m_allSprite -> SetBlendMode(blend);} // 设置混和模式
void SetScale( float scale) {fScale = scale;} // 设置比例
void SetRotation( float rot) {fRot = rot;} // 设置旋转角度
void SetTracking( float tracking) {fTracking = tracking;} // 设置轨迹
DWORD GetColor() const { return
原作者:微妙的平衡
修改者:sf.tk
修改日期:2007-06-28
修改者 :Showlong
修改内容:去掉format的bug.
不需要处理多张字符纹理.
修改数据类型的不平衡.
修正SetBlendMode函数内部错误
填加获取串指定个数的长度
填加渲染长度截取
*************************************************** */
#pragma once
#include " hge.h "
#include " hgesprite.h "
#include < iostream >
class hgeFontCN
{
enum FONTCN_DATA
{
VALUE_FIX = 1 ,
HZ_H_MAX = 87 + VALUE_FIX, // 0xA1~0xF7 汉字编码范围高位(+1是给普通字母与标点符号留位置)
HZ_W_MAX = 95 , // 0xA0~0xFE 汉字编码范围底位
HZ_H_FIX = 0xA1 ,
HZ_W_FIX = 0xA0 ,
HZ_H_END = 0xF7 ,
HZ_W_END = 0xFE ,
ASCII_FIX = 0x20 ,
ASCII_END = 0x7f ,
ASCII_W = 6
};
struct FontCN_Head
{
char strHead[ 32 ];
char ImgFileNum; // 字模文件数
char firstImgFileName[ 40 ]; // 第一个字模文件名
DWORD dwStringCol;
DWORD dwStringRow;
DWORD dwFontWidth;
DWORD dwFontHeight;
public :
void SetData( char * head, char num, const char * firstImg, DWORD nCol, DWORD nRow, DWORD nFWidth, DWORD nFHeight);
};
struct FontCN_Frame
{
BYTE HZ[ 2 ];
BYTE fileIdx; // 所属的字模文件
WORD dwFontX;
WORD dwFontY;
public :
void SetData(BYTE h, BYTE l, BYTE idx, WORD fx, WORD fy);
};
public :
hgeFontCN( const char * filename); // 根据字体文件创建
~ hgeFontCN( void );
void Render( float x, float y, const char * string , int cutlen = 0 ); // 绘制字符串
void printf( float x, float y, const char * format, ...); // 绘制格式字符串
void SetColor(DWORD col){m_allSprite -> SetColor(col);} // 设置字体颜色
void SetZ( float z){m_allSprite -> SetZ(z);} // 设置Z缓冲
void SetBlendMode( int blend){m_allSprite -> SetBlendMode(blend);} // 设置混和模式
void SetScale( float scale) {fScale = scale;} // 设置比例
void SetRotation( float rot) {fRot = rot;} // 设置旋转角度
void SetTracking( float tracking) {fTracking = tracking;} // 设置轨迹
DWORD GetColor() const { return