
//来自http://www.it610.com/article/5184066.htm
#include<Windows.h>
#include<gl/glut.h>
#pragma comment(linker, “/subsystem:“windows“ /entry:“mainCRTStartup“”)
#define Max_Char 128
void PrintWord(const char str)
{
static GLuint GLlists;
wchar_t wstring;
GLlists=glGenLists(1);
int len=0;
for(int i=0;str[i]!=’ ’;i++)
{
if(IsDBCSLeadByte(str[i]))//判断是否双字节
++i;
++len;
}
wstring=(wchar_t )malloc((len+1)sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str,-1,wstring,len);//将字符串转换为双字节
wstring[len]=L’ ’;//字符串末尾添加’ ’结束符
for(int i=0;i<len;i++)
{
wglUseFontBitmapsW(wglGetCurrentDC(),wstring[i],1,GLlists);//设置显示列表字符
glCallList(GLlists);
}
free(wstring);//释放内存
glDeleteLists(GLlists,1);//销毁显示列表
}
void selectFont(int size, int charset, const char* face) {
HFONT hFont = CreateFontA(size, 0, 0, 0, 500, 0, 0, 0,
charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face);
HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont);
DeleteObject(hOldFont);
}
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_SMOOTH);
}
void disply()
{
glClear(GL_COLOR_BUFFER_BIT);
selectFont(48, ANSI_CHARSET, “黑体”); //调用参数为 字号 字符集 字体
glRasterPos2f(-0.1f, 0.0f);
glColor3f(1.0,0.0,0.0);
PrintWord(“你好么?”);
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//指定显示模式
glutInitWindowSize(500,500);//指定窗口大小
glutInitWindowPosition(100,100);//指定窗口左上角位置
glutCreateWindow(“OpenGL”);//创建窗口标题为OpenGL的窗口
init();
glutDisplayFunc(disply);
glutMainLoop();
return 0;
}




近期评论