Capricorn_L 2015-12-21 04:59
浏览 892

OpenGL绘制字体的问题:项目从32位改到64位后不能绘制

/*以下是准备工作*/
HFONT hFont = CreateFont(30, 0, 0, 0, FW_MEDIUM, 0, 0, 0,
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, TEXT("宋体"));
HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont);
DeleteObject(hOldFont);
glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos3f(txtpos.x, txtpos.y, txtpos.z);
int strlen = walllength.GetLength();
char *wall_lengh = new char[strlen + 1];
memset(wall_lengh, 0, strlen + 1);

WideCharToMultiByte(CP_OEMCP, NULL, (LPCWSTR)walllength, -1, NULL, 0, NULL, FALSE);
WideCharToMultiByte(CP_OEMCP, NULL, (LPCWSTR)walllength, -1, (LPSTR)wall_lengh, strlen, NULL, FALSE);

wall_lengh[strlen] = '\0';

GLDrawString(wall_lengh);

/*以下是绘制函数**********************************************************************************************/
void GLDrawString(const char* str) {
static int isFirstCall = 1;
static GLuint lists;
if (isFirstCall) { // 如果是第一次调用,执行初始化
// 为每一个ASCII字符产生一个显示列表
isFirstCall = 0;

    // 申请MAX_CHAR个连续的显示列表编号
    lists = glGenLists(MAX_CHAR);

    // 把每个字符的绘制命令都装到对应的显示列表中
   //HDC c = wglGetCurrentDC();
    wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
    /*glGetError();*/
}
// 调用每个字符对应的显示列表,绘制每个字符
for (; *str != '\0'; ++str)
{
    glCallList(lists + *str);

}

}
/*以上是之前绘制字体的函数,只要传入char* str就可以绘制出来数字,比如“12345”,但是项目从32位改为64位以后就没法绘制了,我查了一下,发现是wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);返回0,有没有大神知道是为什么啊,小弟没分。。。。真的不好意思*/

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 MATLAB动图问题
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名