|
|
请大家看一下 下面的这一段的程序
#include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h>
#include <iostream>
using namespace std;
//注意,编译器的搜索路径中必须包括 FTGL freetype两个文件夹
//而且附加库中也要有ftgl和freetype两个库才行
//工程属性中添加ftgl_dynamic_MTD_d.lib(Debug版本)或者ftgl_dynamic_MTD.lib(Release版本)
#include <FTGL/FTGLPixmapFont.h>
FTGLPixmapFont *freeTypeFont = NULL;
void init(void)
{
glShadeModel(GL_SMOOTH); // 启用阴影平滑
glClearDepth(1.0f); // 设置深度缓存
glEnable(GL_DEPTH_TEST); // 启用深度测试
glDepthFunc(GL_LEQUAL); // 所作深度测试的类型
//FTGL初始化
char filePath[256]={0};
sprintf(filePath, "C:\\WINDOWS\\Fonts\\simhei.ttf");
freeTypeFont = new FTGLPixmapFont(filePath);
if(freeTypeFont == NULL)
{
char buf[] = "Font C:\\WINDOWS\\Fonts\\simhei.ttf can not be fond.\r\n";
printf("%s", buf);
exit(0);
}
else
{
freeTypeFont->FaceSize(24); // 必须
// freeTypeFont->CharMap(ft_encoding_unicode);
}
}
wchar_t str[128]=L"景色真是不错。。。";
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存
glMatrixMode(GL_PROJECTION); // 切换到投影矩阵
glLoadIdentity(); // 重置投影矩阵
glOrtho(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 10.0f);
glMatrixMode(GL_MODELVIEW); // 切换到模型视图矩阵
glLoadIdentity(); // 重置模型视图矩阵
//FTGL 输出测试,
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glRasterPos2f(0.2, 0.5);
freeTypeFont->Render(str);
cout < <"sdsadsadasd";
glutSwapBuffers();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective (45.0, (GLdouble)w/(GLdouble)h, 1.0, 10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (600, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow("FTGL 中文输出测试");
init();
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
运行是没有问题的 可是如果我改变字体的大小 就会出现问题
例如我把
freeTypeFont->FaceSize(24);
这句改为
freeTypeFont->FaceSize(18);
运行是就会出现问题 也不知道为什么 请大家帮帮忙
|
|