Ну вроде я так сделал, но не помогает.
Что я делаю:
В инициализации Запускаю BuildFont()
Код:
private static void BuildFont()
{
IntPtr font; // Windows Font ID
IntPtr oldfont; // Used For Good House Keeping
fontbase = Gl.glGenLists(256); // Storage For 256Characters
font = Gdi.CreateFont( // Create The Font
-24, // Height Of Font
0, // Width Of Font
0, // Angle Of Escapement
0, // Orientation Angle
Gdi.FW_BOLD, // Font Weight
false, // Italic
false, // Underline
false, // Strikeout
Gdi.ANSI_CHARSET, // Character Set Identifier
Gdi.OUT_TT_PRECIS, // Output Precision
Gdi.CLIP_DEFAULT_PRECIS, // Clipping Precision
Gdi.ANTIALIASED_QUALITY, // Output Quality
Gdi.FF_DONTCARE | Gdi.DEFAULT_PITCH, // Family And Pitch
"Arial"); // Font Name
IntPtr hDC = Wgl.wglGetCurrentDC(); //Я добавил эту строчку
oldfont = Gdi.SelectObject(hDC, font); // Selects The Font We Want
Wgl.wglUseFontBitmaps(hDC, 0, 255, fontbase); // Builds 256 Characters Gdi.SelectObject(hDC, oldfont); // Selects The Font We Want
Gdi.DeleteObject(font); // Delete The Font
}
Потом внутри создания сцены вызываю
Код:
Gl.glRasterPos3d(10, 15, 30);
glPrint("Waw Привет 1221");
где
Код:
private static void glPrint(string text)
{
if (text == null || text.Length == 0)
{ // If There's No Text
return; // Do Nothing
}
Gl.glPushAttrib(Gl.GL_LIST_BIT); // Pushes The Display List Bits
Gl.glListBase(fontbase); // Sets The Base Character
// .NET -- we can't just pass text, we need to convert
byte[] textbytes = new byte[text.Length];
for (int i = 0; i < text.Length; i++) textbytes[i] = (byte)text[i];
Gl.glCallLists(text.Length, Gl.GL_UNSIGNED_BYTE, textbytes); // Draws The Display List Text
Gl.glPopAttrib(); // Pops The Display List Bits
}
В результате я получаю "Waw @825В 1221"
Вот такие пироги
В качестве базового кода я взял урок 13 NeHe, который поставлялся с Tao framewok. Я старался как можно меньше делать изменений. Вот А русских букв я так и не увидел(((
Наверное прийдется делать свою текстуру, а очень не хочется