Войти
ПрограммированиеФорумГрафика

А что, квады на разных видеокартах рисуются по разному? ( OpenGL ) (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
17:48, 10 мая 2012

Chipmunk
> Мне как-то один человек на форуме доказывал, что std::string имеют
> '\0'-терминальный символ.

А разве нет?


#31
19:15, 10 мая 2012

костыль
выведи в цвет текстурные координаты и выложи скрин
такое ощущение, что текстурирование без учета перспективы

#32
19:22, 10 мая 2012

костыль
Ты можешь тупо заюзать triangle fan, заменив только константу, и везде будет одинаково.

#33
19:37, 10 мая 2012

Executor

Сам факт что разные видеокарты по разному разбивают на трианглы - вот это проблема.
У себя в программе я могу нарисовать как угодно, там пару строчек в коде поменять.
Но дело в том, что модели из программы можно сохранить в файл.
В моей программе они выглядят так, а если эти сохраненные модели загрузить в другую программу на другом компе,
они могут выглядеть уже по другому, если порядок разбиения на том компе другой.

#34
19:46, 10 мая 2012

Конкретно, где это может понадобиться.
Предположим мы рисуем дерево.
На каждый листочек - отдельный квад.
Если листочек немного согнуть вдоль его стебелька, то будет реалистичней смотреться.
Т.е. в данном конкретном случае точки квада не лежат в одной плоскости, и намного  выгоднее рисовать именно квадами а не трианглами.

Но если порядок разбиения квада на трианглы другой, то листочки получатся некрасиво согнутыми поперек.

#35
19:56, 10 мая 2012

костыль
> Сам факт что разные видеокарты по разному разбивают на трианглы - вот это проблема.

Рисовать квад, вершины которого не в одной плоскости - вот проблема. :)

> У себя в программе я могу нарисовать как угодно, там пару строчек в коде поменять.

Заменить одну константу на другую всего лишь, никаких строчек.

> В моей программе они выглядят так, а если эти сохраненные модели загрузить в
> другую программу на другом компе,
> они могут выглядеть уже по другому, если порядок разбиения на том компе другой.

А что обязательно сохранять как квады, чтобы в другой программе получилось иначе?
Сохрани как фаны/скрины/листы, как угодно. Свет клином на квадах не сошёлся.
Темболее аппаратные квады есть только на НВ.

> Но если порядок разбиения квада на трианглы другой, то листочки получатся некрасиво согнутыми поперек.

Нет квадов - нет проблемы! :)

#36
9:46, 11 мая 2012

Executor
> Рисовать квад, вершины которого не в одной плоскости - вот проблема. :)

А еще проблема - невыпуклый квад, даже если вершины в одной плоскости.

> Заменить одну константу на другую всего лишь, никаких строчек.

Заменить одну константу недостаточно. А если мы рисуем массив квадов?
У меня в программе эти массивы квадов вообще рисуется 4 разными способами, в зависимости от настроек пользователя:

 case RenderFunc of
  1   :begin
        glCallList( List );
       end;
  2   :begin
        SetRenderArrays;
        if ( MeshNCount > 0 ) then glEnableClientState( GL_NORMAL_ARRAY_EXT );
        if ( MeshTCount > 0 ) then glEnableClientState( GL_TEXTURE_COORD_ARRAY_EXT );
        if ( MeshVCount > 0 ) then glEnableClientState( GL_VERTEX_ARRAY_EXT );
        glDrawElements( RenderMode , MeshICount , GL_UNSIGNED_SHORT , MeshII );
        glDisableClientState( GL_VERTEX_ARRAY_EXT );
        glDisableClientState( GL_TEXTURE_COORD_ARRAY_EXT );
        glDisableClientState( GL_NORMAL_ARRAY_EXT );
       end;
  3   :begin
        vbo.Activate( True );
         glDrawElements( RenderMode , MeshICount , GL_UNSIGNED_SHORT , nil );
        vbo.Activate( False );
       end;
  else begin
        glBegin( RenderMode );
         for i:=0 to MeshICount-1 do
         begin
          if MeshTCount > 0 then glTexCoord2fv ( @MeshTT[MeshII[i]] );
          if MeshNCount > 0 then glNormal3fv   ( @MeshNN[MeshII[i]] );
          glVertex3fv( @MeshVV[MeshII[i]] );
         end;
        glEnd;
       end;
 end;

> А что обязательно сохранять как квады, чтобы в другой программе получилось
> иначе?
> Сохрани как фаны/скрины/листы, как угодно. Свет клином на квадах не сошёлся.

Если сохранять как квады то размер файлов намного меньше получается.

#37
9:57, 11 мая 2012

костыль
> Заменить одну константу недостаточно. А если мы рисуем массив квадов?

Я говорил про конкретный случай на скрине.
Если у тебя много квадов, то тогда треугольниками.

> Если сохранять как квады то размер файлов намного меньше получается.

Экономия на спичках.

#38
10:00, 11 мая 2012

костыль
> Если сохранять как квады то размер файлов намного меньше получается.
Сохраняй как квады, триангулируй рантайм.

#39
10:13, 11 мая 2012

Executor
> Экономия на спичках.

Не только экономия. Если. например, мы рисуем очень развесистое дерево трианглами а не квадами, то размера индексного буфера может не хватить.
Вообще - проблемы все переделать нет, просто неприятный такой сюрприз.

#40
10:17, 11 мая 2012

ArchiDevil
> Сохраняй как квады, триангулируй рантайм.

Не я сохраняю, сохраняет конечный пользователь для себя, как он узнает по какой диагонали триангулировать, стандарта ведь нет.

#41
10:43, 11 мая 2012

костыль
> Если. например, мы рисуем очень развесистое дерево трианглами а не квадами, то размера индексного буфера может не хватить.

Как размера индексого буфера может не хватать? Что за бред?

#42
10:59, 11 мая 2012

Executor
> Как размера индексого буфера может не хватать? Что за бред?
Это я о своем :) У меня было - память под индексный буфер выделяется заранее фиксированного размера.
А вообще о чем спорить - то что с квадами иногда удобнее и однозначно  экономнее это очевидно.

#43
13:35, 11 мая 2012

Кстати, можно и программно определить по какой именно диагонали видеокарта триангулирует квады.
Нужно нарисовать невыпуклый квад, и потом прочитать значение пикселя внутри треугольника.
Если треугольник образованный внешними точками заполняется полностью, то по одной, если не полностью то по другой.

#44
15:26, 11 мая 2012

костыль
> А вообще о чем спорить - то что с квадами иногда удобнее и однозначно 
> экономнее это очевидно.

Госспади, ты прикалываешься? Где удобней? Изобретать дополнительные (не побоюсь этого слова) костыли?
Делай сразу всё трианглами и не парься.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.