Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
1379.
psch
(27.08.2007 14:34)
0
2 Михаил Спасибо, прогу скачал, на инклуды уже ругается ) Теперь нужно до какой-нить АТИ добраться.
|
1378.
Alien
(26.08.2007 13:49)
0
У кого есть файл maggot3.md5mesh из DoomIII к статье "Скелетная анимация" киньте мне на почту пожалуйста. (Если конечно он не большой)
|
1377.
Михаил
(26.08.2007 10:38)
0
2 psch проверь GLSL Validate''ром. в основном там мелкие ошибки типа float f1(1), а должнобыть float f1(1.0). и в каком-то примере была скажем очень нехорошая ошибка, где использовалась переменная gl_FragColor в ВЕРШИННОМ шейдере... в каком именно вспомнить немогу.
|
1376.
psch
(26.08.2007 00:47)
0
Алексей, работают ли ваши GLSL примеры на картах ATI? И если нет, то как сделать, чтобы они заработали (не считая того, что нужно убрать инклуды)? И можно ли это сделать вообще?
|
1375.
Игорь
(24.08.2007 14:40)
0
Добрый день, Алексей. Ну как там с багом в libTexture? Или пока не до него? Честно говоря эта библиотека мне симпатична, и я бы хотел её использовать и дальше.
|
1374.
Marsel
(23.08.2007 17:05)
0
А. Боресков Вы знаете что-нибудь о языке D? И ваше мнение о нем, пожалуйста. http://en.wikipedia.org/wiki/D_programming_language http://www.digitalmars.com/d/
|
1373.
Михаил
(18.08.2007 21:37)
0
дык я и неговорю, что это плохо :) я говорю что ты этим велосипед не изобрел, похожиц код много где встречается, у НеХе например, ну а насчет читабельности - сделай текстуру 512х512 - небудет уступать битмаповым.
|
1372.
(18.08.2007 11:05)
0
Михаил - это разве плохо? как я уже сказал это работает значительно быстрее wgl вариантов ну и выглядит вобщемто красивее, хотя битмаповые шрифты возможно более читабельны
|
1371.
Михаил
(16.08.2007 14:08)
0
дак практически все методы вывода текста основаны на дисплей листах :)))
|
1370.
FJ
(15.08.2007 16:11)
0
Очень долго сам мучался с различными способами вывода текста, в результате чего родилось примерно это: void Font::Print(GLdouble X, GLdouble Y, const char *fmt, ...) { static char text[512]; // Место для нашей строки //memset(text,0,256); va_list ap; // Указатель на список аргументов if (fmt == NULL || IsBadStringPtr(fmt,200)) // Если нет текста return; // Ничего не делать va_start(ap, fmt); // Разбор строки переменных vsprintf(text, fmt, ap); // И конвертирование символов в реальные коды va_end(ap); // Результат помещается в строку
glPushAttrib(GL_LIST_BIT|GL_DEPTH_BUFFER_BIT|GL_ENABLE_BIT|GL_CURRENT_BIT); // Сохранение настроек glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); T->bind(); glDisable(GL_DEPTH_TEST); // Disables Depth Testing glEnable(GL_TEXTURE_2D); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPushMatrix(); // Store The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix
glOrtho(0,Font::scr_width,480,0,-1,1); // Set Up An Ortho Screen glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); // Store The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix
glDisable(GL_LIGHTING); glEnable(GL_BLEND); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(Color.d.c.x,Color.d.c.y,Color.d.c.z,alfa);// Установка цвета шрифта glTranslated(X*Font::scr_width,Y*480.0,0); // Position The Text (0,0 - Bottom Left) switch(this->ha) { case Text::center: { size_t strl = strlen (text); GLdouble shift = 0.0; for (size_t i = 0 ; i < strl ; i++ ) { shift += lfg [(unsigned char)text[i]].A + lfg [(unsigned char)text[i]].B; } glTranslated(-shift/2 * ( float ) Size * 30 / Globals.VP.ScreenStrings ,0.0,0.0); } break; case Text::right: { size_t strl = strlen (text); GLdouble shift = 0.0; for (size_t i = 0 ; i < strl ; i++ ) { shift += lfg [(unsigned char)text[i]].A + lfg [(unsigned char)text[i]].B; } glTranslated(-shift * ( float ) Size * 30 / Globals.VP.ScreenStrings,0.0,0.0); } break; } glScaled(Size*30/Globals.VP.ScreenStrings,Size*30/Globals.VP.ScreenStrings,1.0); glListBase(this->Base); // Choose The Font Base glCallLists((GLsizei)strlen(text),GL_UNSIGNED_BYTE,text); // Write The Text To The Screen glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); // Restore The Old Projection Matrix glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPopMatrix(); // Restore The Old Projection Matrix glEnable(GL_DEPTH_TEST); // Enables Depth Testing glPopAttrib(); // Возврат } ////////////////// это метод print класса, реализующего шрифт шрифты у меня хранятся в текстурке png в таблице 16*16 символов. Текстурка засунута внутрь специаьлного файла, в котором хранятся название шрифта, информация о текстуре и глифы - ширины для каждой буквы всё это в формате iff, поскольку формат меня заинтересовал, когда я делал загрузку LWO мешей
если кому интересно могу и весь класс скинуть и программку, которая эти шрифты генерирует
в итоге получился самый бстрый и самый красивый способ вывода текста. на основе этого класса очень легко оказалось реализовать и консоль
mailto: fjplus''пёс''ya.ru
|
1369.
Михаил
(14.08.2007 19:37)
0
будем еще современней и используем framebuffer :)
|
1368.
Григорий
(14.08.2007 12:59)
0
Поясню что хочет Ravent:
кадр со сценой уже отрендерен. задача наложить на это изображение текстуры элементов UI/Счетчики жизни или же отобразить популярную нынче ''консоль''.
Подозреваю что самое простое и современное решение - отрисовать кадр в p-buffer и наложить сверху нужные текстуры/текст. Если с текстурами все ясно, то как быть с текстом?
|
1367.
Михаил
(13.08.2007 22:06)
0
2 Ravent: Перед началом перейди в двумерный режим c glPerspective на glOrtho и будет тебе счастье без перспекитвных искажений.
|
1366.
dyachVS
(11.08.2007 02:17)
0
Алекс Боресков, помню где-то 4 месяца назад Вы под впечатлением от Сталкера обещали статью про Deffered Shading... интересно, на сколько она завершена и когда можно будет на нее взглянуть? Интересно, в ID Tech5 используется DS???
|
1365.
Евгений aka FJ
(10.08.2007 10:08)
0
не могу дождаться статьи по LUA и сам начал писать минипрограммку :) но всёравно почитаю с удовольствием...
|
|
|
|