Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GL_LINE_LOOP c заливкой 
:(
    Опции темы
ltise
Дата 4.7.2012, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет! подкажите чайнику плиз:

рисую кучу замкнутых линий в лист и потом отрисовывю это лист по paint:

Код

GlMainWindow::GlMainWindow(...) : QGLWidget(...)
{
  createPaintingTest();
}

void GlMainWindow::paintGL()
{
  glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
  glClear( GL_COLOR_BUFFER_BIT );

  glColor3f( 1.0f, 0.0f, 0.0f );

  glPushMatrix();

  glLineWidth(1);

  glCallList(gl_list);

  glPopMatrix();
}


void GlWidget::createPaintingTest()
{
  makeCurrent(); 
  gl_list = glGenLists(1);

  glNewList(gl_list, GL_COMPILE);

  for(....)
  {
    myCurve curve = *iter;

    glColor3f( 0.0f, 0.0f, 0.0f);

    glBegin(GL_LINE_LOOP);

    for (myCurve::data_iterator iter = curve.dataBegin(); iter.haveNext();)
    {
      // по идее тут должны быть кривые Безье
      float x = iter.x();
      float y = iter.y();
      glVertex2d(x, y);
    }
    glEnd();

  }
  glEndList();



Подскажите плиз: 

1. что надо сделать чтобы замкнутые линии рисовались с заливкой ?
(что то типа painter.setBrush(QBrush(...))

2. Как можно использовать кривые Безье ?

Сорри что не прочитал все литературу по OpenGl, нужно быстро сваять тест smile

Заранее спасибо

PM MAIL   Вверх
Amp
Дата 4.7.2012, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. Из линий, составляющих замкнутый контур, построить полигон нужного тебе цвета (GL_POLYGON тот же, только в этом случае он должен быть выпуклым). Затем по тем же точкам нарисовать линии.
2. Самому нарисовать их из линий. Можно использовать evaluator-ы, через glEvalCoord.ъ

Раз уж ты используешь Qt, то лучше просто бери QPainter и рисуй 2d-графику посредством него. И проще и более качественный результат.
PM MAIL   Вверх
ltise
Дата 4.7.2012, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Amp @ 4.7.2012,  15:53)
1. Из линий, составляющих замкнутый контур, построить полигон нужного тебе цвета (GL_POLYGON тот же, только в этом случае он должен быть выпуклым). Затем по тем же точкам нарисовать линии.
2. Самому нарисовать их из линий. Можно использовать evaluator-ы, через glEvalCoord.ъ

Раз уж ты используешь Qt, то лучше просто бери QPainter и рисуй 2d-графику посредством него. И проще и более качественный результат.

QPainter - в смысле с OpenGL ?
PM MAIL   Вверх
Amp
Дата 4.7.2012, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если у тебя только 2d-графика, то просто рисовать QPainter-ом в каком-нибудь виджете, не прибегая к OpenGL. 
PM MAIL   Вверх
ltise
Дата 4.7.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Amp @ 4.7.2012,  16:42)
Если у тебя только 2d-графика, то просто рисовать QPainter-ом в каком-нибудь виджете, не прибегая к OpenGL.

К сожалению не подходит.... куча очень длинных перемешанных кривых с заливкой - тормоза жуткие, что со сценой, что без сцены..векторные картинки типа:
user posted image
группировать линии для дерева и оптимизировать отрисовку тоже не прокатывает - надо сначала эти линии резать.... вощем сплошной головняк   smile 

OpenGL все устраивает, особенно простота.
Надо только прояснить некоторые моменты smile
PM MAIL   Вверх
Amp
Дата 4.7.2012, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как хочешь. Тот же QPainter имеет OpenGL-бэкэнд - его это не сильно спасает smile Кажущаяся простота акунется потом производительностью и будешь ты геометрию раскидывать по буферам, грузить в видеопамять, думать как и что отсекать. Я б накидал еще тестов на cairo и direct2d - поглядел как там дела обстоят.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




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


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

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