Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вывод текста под углом (openGL) / 4 сообщений из 4, страница 1 из 1
18.03.2008, 10:43
    #35197108
вывод текста под углом (openGL)
Здравствуйте!

Пытаюсь вывести текст под углом.

Для создания фонта использую ГДИшную функцию CreateFont.

glMatrixMode(OpenGL.OpenGLControl.GL_PROJECTION);
glLoadIdentity();
glOrtho(-Width / 2, Width / 2, -Height / 2, Height / 2, -2, 2);

glMatrixMode(OpenGL.OpenGLControl.GL_MODELVIEW);
glLoadIdentity();

IntPtr dc = OpenGL.OpenGLControl.GetDC(Handle);
gluLookAt(0, 0, 1,
0, 0, 0,
0, 1, 0);

glClear(GL_COLOR_BUFFER_BIT);

uint mbase; // База списка отображения для фонта

IntPtr font; // Идентификатор фонта
IntPtr oldFont;
String font_name = "Arial";
char[] c = font_name.ToCharArray();

mbase = OpenGL.OpenGLControl.glGenLists(96); // Выделим место для 96 символов ( НОВОЕ )
fixed(char* pc=&c[0])
{
font = CreateFont(48, // Height Of Font
0, // Width Of Font
0, // Angle Of Escapement
0, // Orientation Angle
FW_BOLD, // Font Weight
0, // Italic
0, // Underline
0, // Strikeout
ANSI_CHARSET, // Character Set Identifier
OUT_TT_PRECIS, // Output Precision
CLIP_DEFAULT_PRECIS, // Clipping Precision
ANTIALIASED_QUALITY, // Output Quality
FF_DONTCARE | DEFAULT_PITCH, // Family And Pitch
pc); // Font Name
}

oldFont = OpenGL.OpenGLControl.SelectObject(dc, font);

OpenGL.OpenGLControl.wglUseFontBitmaps(dc, 32, 96, mbase);
OpenGL.OpenGLControl.SelectObject(dc, oldFont); // Selects The Font We Want
OpenGL.OpenGLControl.DeleteObject(font);

glColor3f(1,0,0);

OpenGL.OpenGLControl.glRasterPos3d(0, 0, 0);

OpenGL.OpenGLControl.glPushAttrib(OpenGL.OpenGLControl.GL_LIST_BIT); // Протолкнуть биты списка отображения ( НОВОЕ )
OpenGL.OpenGLControl.glListBase(mbase - 32); // Задать базу символа в 32 ( НОВОЕ )

Encoding ascii = Encoding.ASCII;
string s = "yahoo";

byte[] b = ascii.GetBytes(s);

OpenGL.OpenGLControl.glCallLists(s.Length, OpenGL.OpenGLControl.GL_UNSIGNED_BYTE, b);// Текст списками отображения(НОВОЕ)
OpenGL.OpenGLControl.glPopAttrib(); // Возврат битов списка отображения ( НОВОЕ )

OpenGL.OpenGLControl.glDeleteLists(mbase, 96); // Удаление всех 96 списков отображения ( НОВОЕ )
...
Рейтинг: 0 / 0
18.03.2008, 10:46
    #35197117
вывод текста под углом (openGL)
Упс.. случайно отправилось..

Так вот. перед созданием фонта вызываю glPushMatrix(); glRotate(90,0,0,1); и после отрисовки делаю glPopMatrix(); любые примитивы, отрисовывающиея между этими вызовами отрисовываются адекватно, а текс так и выводится параллельно оси X контекста.. Что делать??? Памагитееееееееее!
...
Рейтинг: 0 / 0
19.03.2008, 16:32
    #35201154
вывод текста под углом (openGL)
Ответ: никак. текстурным шрифта плевать на то в каком состоянии находится система координат. вместо wglUseFontBitmaps нужно использовать wglUseFontOutlines
...
Рейтинг: 0 / 0
20.03.2008, 19:08
    #35204594
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вывод текста под углом (openGL)
Эт ты сам с собой беседу?
И уж коль на cpp ваяешь, то посмотри на http://www.antigrain.com/about
(даже OpenGL не нужен:)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вывод текста под углом (openGL) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]