opengl 在屏幕上输出 文字
opengl用c写,吧helloworld输出在屏幕上,如何实现?nehe的教程看过了,用c++写的看不懂。...
opengl用c写,吧hello world 输出在屏幕上, 如何实现? nehe的教程看过了, 用c++写的看不懂。
展开
1个回答
展开全部
这个问题的确很难,我当初查了无数资料,有这么几个函数,和一个顺序,你看一下
为了保证你的程序可以输出汉字,要先用MultByteToWideChar函数把char转换到wchar_t字型里,要记得在最后面加上'\0'.(先用malloc申请一个够长的wchar_t型的内存段,在计算长度的时候加上这个,因为一个汉字在char要两个单位,但是wchar_t就一个单位,这段代码通过检测字符的意义来判断这个字节的数据是不是独立的一个字符,以此来精确的计算空间.计算好的空间加1后才是要用的空间,因为后面要加一个'\0'
for(i=0;text[i]!='\0'&&i<length;++i)
{
if(IsDBCSLeadByte(text[i]))
++i;
++lan;
}
)
然后glGenList生成一个显示列表备用.
接下来wglUseFontBitmapsW把字符的显示列表画出来保存在刚生成的显示列表里.
这样就OK了,然后再选好位置glCallList 就画出来了.
由于有的时候情况会比较复杂,记得管理好内存,不要造成泄露,记得及时删除用过的显示列表,因为字的转换比较快,所以没必要现写现转,但是为了避免转字的代码比较麻烦,最好写个函数用来在指定的位置上写字.
在转子的过程中还要用到wgl的函数HDC描述句柄等,所以要包含头文件gdi.h连接gdi32.lib ,为了谨慎起见,最好在每次转换的时候检查一下HDC的设备像素格式,以免出了错却不知道是什么问题(有些情况HDC是不支持OpenGL的)
这些函数的参数用法都可以在网上找到,在这里讲出来会非常麻烦.
为了保证你的程序可以输出汉字,要先用MultByteToWideChar函数把char转换到wchar_t字型里,要记得在最后面加上'\0'.(先用malloc申请一个够长的wchar_t型的内存段,在计算长度的时候加上这个,因为一个汉字在char要两个单位,但是wchar_t就一个单位,这段代码通过检测字符的意义来判断这个字节的数据是不是独立的一个字符,以此来精确的计算空间.计算好的空间加1后才是要用的空间,因为后面要加一个'\0'
for(i=0;text[i]!='\0'&&i<length;++i)
{
if(IsDBCSLeadByte(text[i]))
++i;
++lan;
}
)
然后glGenList生成一个显示列表备用.
接下来wglUseFontBitmapsW把字符的显示列表画出来保存在刚生成的显示列表里.
这样就OK了,然后再选好位置glCallList 就画出来了.
由于有的时候情况会比较复杂,记得管理好内存,不要造成泄露,记得及时删除用过的显示列表,因为字的转换比较快,所以没必要现写现转,但是为了避免转字的代码比较麻烦,最好写个函数用来在指定的位置上写字.
在转子的过程中还要用到wgl的函数HDC描述句柄等,所以要包含头文件gdi.h连接gdi32.lib ,为了谨慎起见,最好在每次转换的时候检查一下HDC的设备像素格式,以免出了错却不知道是什么问题(有些情况HDC是不支持OpenGL的)
这些函数的参数用法都可以在网上找到,在这里讲出来会非常麻烦.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询