Как нарисовать собственную линию в OpenGL без потерь производительности, не считая расходы, связанные с вводом возможных дополнительных параметров? Алгоритмы меня в данный момент не интересуют, и хотя они также влияют на производительность, по моему мнению, главные потери всё же не здесь.
А вам всё не имёцца) http://pmg.org.ru/nehe/index.html урок 36 - Радиальное размытие и текстурный рендеринг
Уточнять тут особо нечего. Собственная линия – линия, написанная собственноручно. Скажем, меня не устраивают те линии, которые предоставляет OpenGL ,и я хочу написать свою с некоторыми специфическими особенностями. Сделать это не сложно. Но вот беда – потеря производительности. Это значит, что похожие функции OpenGL будут работать на порядок выше, чем мои собственные, а это сводит всю работу на “нет”.
assemblerist А вообще сходите на http://www.gamedev.ru Там много по графике статей. Может чего найдёте получше.
assemblerist Конечно, потому как аппаратное априори быстрее софтварного. Но на самом деле извратиться возможно, с помощью шейдеров, но зачем?
Ещё один вопрос, на который уже вроде бы дан ответ. Под собственные нужды. Вообще речь идёт не только о линиях, но и о ряде других функций, которые не мешало бы переписать на свой лад. Беда вся в том, что это чревато потерей скорости. А она критична. ….Так чем же здесь могут помочь шейдеры?
assemblerist Так вы пример приведите, а то это всё как-то эфимерно. Шейдеры это программируемый конвеер видеокарты, конечно далеко не всё там ещё программируемо, но что-то есть. Самое главное что нет потери скорости. Начертить линию шейдером возможно, а вот уже что-то более сложное не факт.
assemblerist И нарисовать софтварно линию, это не слишком медленно, единственно не надо использовать мегатормоз gdi.
Например, можно внедрить в функцию линии дополнительные параметры: идентификатор, цвет, угол поворота, начало и конец, состояние, номер группы. На сколько фантазии хватит. Разработчиками графической библиотеки по очень понятным причинам этого предусмотрено не было. Они реализовали так, как сочли нужным. Всё это можно осуществить, но, как уже упоминалось не в первый раз, скорость может упасть и упасть в разы. То есть за свои функции придётся дорого заплатить производительности или использовать не совсем удобные функции OpenGL, что в итоге всё равно приведёт к той же потери скорости. Почему многие разработчики более склоняются к библиотеке DirectX? Историю вспоминать не будем, но есть и другая причина – недостаточно эффективный и удобный инструментаж. DirectX тоже отнюдь не идеал и в нём можно найти немало огрех. Не выход. Поэтому как это исправляется? Переделывается и переваривается до нужного “рабочего” состояния. Насчёт шейдеров – возможно это вариант. Но дело в том, что чертить “более сложное” всё равно придётся. GDI никто вообще не рассматривает. Забудьте о нём.
Вполне. Я уверен и Вы всё прекрасно понимаете. Всё сказано в вопросе и в первом посте. На мой взгляд, он сформулирован предельно ясно.