在C++中要在OpenGL上顯示文字可以在網路上找到許多資料,
而C#雖然也有很多資料但是一直無法試成功,甚至會造成狂吃記憶體.
只是為了顯示簡單的文字,因此就使用C++的來改寫.
Step1.先將opengl32.dll複製到C#專案目錄或確定在\Windows\System32中有opengl32.dll
Step2.由opengl32.dll引入 wglUseFontBitmaps()與wglGetCurrentDC() 兩個函數
[DllImport("opengl32.dll")]
static extern System.Boolean wglUseFontBitmaps(System.IntPtr hdc, System.UInt32 first, System.UInt32 count, System.UInt32 listdbase);
[DllImport("opengl32.dll")]
static extern System.IntPtr wglGetCurrentDC();
Step3.撰寫以下函數,修改自(modified from:) http://blog.sina.com.cn/s/blog_9aa5c2d4010150sp.html
void GLdrawString(string str)
{ //在OpenGL畫布上顯示文字
int isFirstCall = 1;
uint lists = 0;
uint MAX_CHAR = 127;
if (isFirstCall == 1)
{
isFirstCall = 0;
lists = GL.glGenLists((int)MAX_CHAR);
wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
}
char[] str_char = str.ToCharArray();
for (int n = 0; n < str.Length; n++)
GL.glCallList(lists + (uint)str_char[n]);
沒有留言:
張貼留言