c#OpenGL文字显示
用类代替宏定义
public class OpenGLText
{
public int MAX_CHAR = 128;//128个字符
public bool isFirstCall = true;//是否第一次选中
public int lists = 0;
}
将128个字符的绘制命令都装到对应的显示列表中
OpenGLText OpenGLtext=new OpenGLText ();
public void drawString(char[] str)
{
if (OpenGLtext.isFirstCall)
{ // 如果是第一次调用,执行初始化
// 为每一个ASCII字符产生一个显示列表
OpenGLtext.isFirstCall = false;
// 申请MAX_CHAR个连续的显示列表编号
OpenGLtext.lists = Gl.glGenLists(OpenGLtext.MAX_CHAR);
// 把每个字符的绘制命令都装到对应的显示列表中
Wgl.wglUseFontBitmapsW(Wgl.wglGetCurrentDC(), 0, OpenGLtext.MAX_CHAR, OpenGLtext.lists);
}
// 调用每个字符对应的显示列表,绘制每个字符
for(int i=0;i< str.Count ();i++)
Gl.glCallList(OpenGLtext.lists + str[i]);
}
在界面上特定位置显示字符
需要将string转换为char[]
Gl.glColor3f(1.0f, 1.0f, 0.0f);
Gl.glRasterPos2f(50.0f, 100.0f);
string ss= "1 2 3";
char[] cc = ss.ToCharArray();
drawString(cc);
该文章通过查找相关资料改写而成。