Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерирование текстуры из примитивов в OpenGL, Возможно ли? 
V
    Опции темы
Anyone
Дата 3.6.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Рисую объекты, которые состоят из линий, текста, и пр., в общем - из примитивов. И таких объектов много и перерисовывать их приходится достаточно часто (при перемещении мыши), потому все тормозит (В жди+ и то быстрее). Тормозит собсно изза текста, но я уже и не знаю как его оптимизировать - все символы кешируются в списке отображения.

Есть идея генерировать динамически для каждого объекта  текстуру (или хотябы делать текстуру, которая содержит только текст, а все остальное - прозрачные области и накладывать поверх примитивов). 
Это можно как-то осуществить?
Есть другие идеи?

Использую С#+Tao.Framework+Tao.FreeType
PM MAIL   Вверх
Anyone
Дата 4.6.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Придется самому отвечать...
Думаю это то, что мне нужно


Это сообщение отредактировал(а) Anyone - 4.6.2009, 13:56
PM MAIL   Вверх
Anyone
Дата 4.6.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Никого не хочу обидеть, но здесь есть люди, которые хорошо разбираются в ОЖЛ, или у меня вопросы тупые?
задаю вопрос с последней надеждой на то что я ошибаюсь.
Нигде не могу найти пример как использовать команду glCopyTexImage2D.
Вот мой код:
 
Код

          bool startMouseMove=false;
            int RenderTex;
            private void glControl_MouseMove(object sender, MouseEventArgs e)
            {
                Gl.glReadBuffer(Gl.GL_FRONT);
                Gl.glDrawBuffer(Gl.GL_FRONT);
                if (startMouseMove)
                {
                    Gl.glBegin(Gl.GL_QUADS);                           // Black rectangle!!!
                    Gl.glTexCoord2dv(new double[] { 0.0, 0.0 });
                    Gl.glVertex2d(mousePositionPrev.X-35, mousePositionPrev.Y-60);
                    Gl.glTexCoord2dv(new double[] { 1.0, 0.0 });
                    Gl.glVertex2d(mousePositionPrev.X-35 + 70, mousePositionPrev.Y-60);
                    Gl.glTexCoord2dv(new double[] { 1.0, 1.0 });
                    Gl.glVertex2d(mousePositionPrev.X-35 + 70, mousePositionPrev.Y -60 + 120);
                    Gl.glTexCoord2dv(new double[] { 0.0, 1.0 });
                    Gl.glVertex2d(mousePositionPrev.X-35, mousePositionPrev.Y -60 + 120);
                    Gl.glEnd();
                }
                else
                {
                    startMouseMove = true;
                    mousePosition = glControl.PointToClient(Cursor.Position);
                }
                mousePositionPrev = mousePosition;
                mousePosition = glControl.PointToClient(Cursor.Position);
                 DrawFrames(mousePosition, 1);
                Gl.glBindTexture(Gl.GL_TEXTURE_2D, RenderTex);
                Gl.glCopyTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA,
                  mousePosition.X, mousePosition.Y, 70, 120, 0);
                Gl.glFlush();
                Gl.glDrawBuffer(Gl.GL_BACK);

            } 


Но вместо наложения текстуры у меня черный прямоугольник.
Что я делаю не так?
Есть примеры по использованию glCopyTexImage2D?

Это сообщение отредактировал(а) Anyone - 4.6.2009, 23:17
PM MAIL   Вверх
galileopro
  Дата 20.6.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

Репутация: нет
Всего: нет



Может попробовать посмотреть в примерах самого Tao? (Сори, ответил, что смог. Сам не профи.) 
А еще может перед наложением текстуры добавить Gl.glReadBuffer(Gl.GL_BACK); ?
PM MAIL WWW ICQ   Вверх
Anyone
Дата 21.6.2009, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Цитата(galileopro @  20.6.2009,  12:23 Найти цитируемый пост)
А еще может перед наложением текстуры добавить Gl.glReadBuffer(Gl.GL_BACK); ? 

Спасибо за ответ. Да, это была одной из моих ошибок. Эту проблему я решил (сохраняю в текстуру весь экран), но возникли новые)))) 

Это сообщение отредактировал(а) Anyone - 21.6.2009, 23:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0922 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.