请教妖哥及各位,能给openGL显示汉字的代码吗

Rojo.Cai 2014-10-31 11:03:34
妖哥,能给openGL显示汉字的代码吗
...全文
850 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2014-11-04
  • 打赏
  • 举报
回复
对OpenGL不熟悉。你说说报什么错误?
Rojo.Cai 2014-11-03
  • 打赏
  • 举报
回复
#include <GL/glut.h> #include <windows.h> #define MAX_CHAR 128 void drawString(const char* str) { static int isFirstCall = 1; static GLuint lists; if( isFirstCall ) { // 如果是第一次调用,执行初始化 // 为每一个ASCII字符产生一个显示列表 isFirstCall = 0; // 申请MAX_CHAR个连续的显示列表编号 lists = glGenLists(MAX_CHAR); // 把每个字符的绘制命令都装到对应的显示列表中 wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists); } // 调用每个字符对应的显示列表,绘制每个字符 for(; *str!='\0'; ++str) glCallList(lists + *str); } void drawCNString(const char* str) { int len, i; wchar_t* wstring; HDC hDC = wglGetCurrentDC(); GLuint list = glGenLists(1); // 计算字符的个数 // 如果是双字节字符的(比如中文字符),两个字节才算一个字符 // 否则一个字节算一个字符 len = 0; for(i=0; str[i]!='\0'; ++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'\0'; // 逐个输出字符 for(i=0; i<len; ++i) { wglUseFontBitmapsW(hDC, wstring[i], 1, list); glCallList(list); } // 回收所有临时资源 free(wstring); glDeleteLists(list, 1); } void selectFont(int size, int charset, const char* face) { HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 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 display(void) { glClear(GL_COLOR_BUFFER_BIT); selectFont(48, ANSI_CHARSET, "Comic Sans MS"); glColor3f(1.0f, 0.0f, 0.0f); glRasterPos2f(-0.7f, 0.4f); drawString("Hello, World!"); selectFont(48, GB2312_CHARSET, "楷体_GB2312"); glColor3f(1.0f, 1.0f, 0.0f); glRasterPos2f(-0.7f, -0.1f); drawCNString("当代的中国汉字"); selectFont(48, DEFAULT_CHARSET, "华文仿宋"); glColor3f(0.0f, 1.0f, 0.0f); glRasterPos2f(-0.7f, -0.6f); drawCNString("傳統的中國漢字"); glutSwapBuffers(); } void init (void) { glClearColor (0.0, 0.0, 0.0, 0.0); /* select clearing olor */ // glMatrixMode(GL_PROJECTION); /* initialize viewing values */ // glLoadIdentity(); // glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); //注意该视景体的范围和几何中心 } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (500, 500); //改为glutInitWindowSize (250, 250); 可以看出变换的仅仅是物体按比例大小的变换 glutInitWindowPosition (100, 100); glutCreateWindow ("First"); init (); glutDisplayFunc(display); glutMainLoop(); return 0; } 那喂兄弟帮用CB调试一下,自己调试了一下,老师出现错误
Rojo.Cai 2014-11-01
  • 打赏
  • 举报
回复
礼拜天没人?
Rojo.Cai 2014-10-31
  • 打赏
  • 举报
回复
直接在Panel上用OpenGL输出文字
Rojo.Cai 2014-10-31
  • 打赏
  • 举报
回复
引用 2 楼 songhtao 的回复:
OpenGL显示文字--显示汉字 http://blog.csdn.net/zhouhangjay/article/details/6715332
能帮忙用BC调试一下吗
我不懂电脑 2014-10-31
  • 打赏
  • 举报
回复
OpenGL显示文字--显示汉字 http://blog.csdn.net/zhouhangjay/article/details/6715332

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧