Написал программу на дельфи. Много вывода графики на экран, не тянет. Нужно ускорять.
Как я понимаю, выбор невелик — opengl или directx — не знаю ни того ни другого,
нужно что-то выбрать для освоения.
Какое приложение удобнее распространять и поддерживать?
Здравствуйте, Тимофей, Вы писали:
Т>Всем привет!
Т>Написал программу на дельфи. Много вывода графики на экран, не тянет. Нужно ускорять. Т>Как я понимаю, выбор невелик — opengl или directx — не знаю ни того ни другого, Т>нужно что-то выбрать для освоения.
Т>Какое приложение удобнее распространять и поддерживать?
Для начала попробуйте рисовать не на экран, а в память, а потом уже готовое выводите на экран. Заодно и проблему смаргивания, мерцания, и прочих артефактов прорисовки решите раз и навсегда.
Ни OpenGL, ни DirectX для шаровары крайне нежелетелен без особых на то показаний, типа 3D-графики, видео или неких специфично игровых потребностей.
Здравствуйте, Ippi, Вы писали:
I>Здравствуйте, Тимофей, Вы писали:
Т>>Всем привет!
Т>>Написал программу на дельфи. Много вывода графики на экран, не тянет. Нужно ускорять. Т>>Как я понимаю, выбор невелик — opengl или directx — не знаю ни того ни другого, Т>>нужно что-то выбрать для освоения.
Т>>Какое приложение удобнее распространять и поддерживать?
I>Для начала попробуйте рисовать не на экран, а в память, а потом уже готовое выводите на экран. Заодно и проблему смаргивания, мерцания, и прочих артефактов прорисовки решите раз и навсегда.
I>Ни OpenGL, ни DirectX для шаровары крайне нежелетелен без особых на то показаний, типа 3D-графики, видео или неких специфично игровых потребностей.
Здравствуйте, Ippi, Вы писали:
I>Для начала попробуйте рисовать не на экран, а в память, а потом уже готовое выводите на экран. Заодно и проблему смаргивания, мерцания, и прочих артефактов прорисовки решите раз и навсегда.
Я так и делаю. Все равно медленно
I>Ни OpenGL, ни DirectX для шаровары крайне нежелетелен без особых на то показаний, типа 3D-графики, видео или неких специфично игровых потребностей.
Вот это мне интересно. Почему? Вроде как они оба составная часть Windows? Программа все равно виндовая, это рынок не сузит.
Новых наворотов мне не нужно, 3D там нет, просто быстро выводить очень много точек напрямую в видеопамять.
Здравствуйте, Тимофей, Вы писали:
Т>Всем привет!
Т>Написал программу на дельфи. Много вывода графики на экран, не тянет. Нужно ускорять. Т>Как я понимаю, выбор невелик — opengl или directx — не знаю ни того ни другого, Т>нужно что-то выбрать для освоения.
Т>Какое приложение удобнее распространять и поддерживать?
Чего думать-то? Ясно дело — OpenGL. Особенно если кроме дельфи (ObjectPascal) вы не знаете других языков.
C (си) интерфейс OpenGL будет куда понятнее, к тому же есть готовые .pas файлы с описанием функций/процедур.
Ну и в завершении — кроссплаформенность. На будущее. К тому же опыт на OpenGL чаще востребован с т.з. будущего трудоустройства.
Вот такие мои аргументы.
Здравствуйте, Тимофей, Вы писали:
I>>Ни OpenGL, ни DirectX для шаровары крайне нежелетелен без особых на то показаний, типа 3D-графики, видео или неких специфично игровых потребностей.
Т>Вот это мне интересно. Почему? Вроде как они оба составная часть Windows? Программа все равно виндовая, это рынок не сузит. Т>Новых наворотов мне не нужно, 3D там нет, просто быстро выводить очень много точек напрямую в видеопамять.
То, что вы называете "составной частью Windows" — лишь часть подсистемы (да и то, вместе с Windows посталяется лишь базовый вариант; полный DirectX нужно накатывать отдельно (к тому же он постоянно обновляется); насчёт OpenGL не помню); остальное находится в драйверах устройств, качество которых год от года, увы, не улучшается; связавшись с DirectX или OpenGL, вы можете обречь себя на постоянную борьбу за совместимость с зоопарком устройств и драйверов разных производителей и годов выпуска путём непрерывного строгания workaround'ов для вновь появлющихся не по вашей вине багов. Зависит от задачи, конечно, но потенциал возможных неприятностей вы должны оценить.
А "быстро выводить очень много точек напрямую в видеопамять" в общем случае медленнее, чем выводить их в основную память и потом единственным блитом отправлять в видеобуфер.
I>А "быстро выводить очень много точек напрямую в видеопамять" в общем случае медленнее, чем выводить их в основную память и потом единственным блитом отправлять в видеобуфер.
Кстати, для справки — пульнуть точку c нужными координатами в 32-битный DIB — дело порядка десятка тактов CPU. Сотен миллионов точек в секунду вам достаточно?
Здравствуйте, Ippi, Вы писали:
I>То, что вы называете "составной частью Windows" — лишь часть подсистемы (да и то, вместе с Windows посталяется лишь базовый вариант; полный DirectX нужно накатывать отдельно (к тому же он постоянно обновляется); насчёт OpenGL не помню);
С каких это пор полный DirectX надо накатывать отдельно? Он с WinXP идет в базе, для 2D графики никаких серъезных изменений нет.
Здравствуйте, traveler, Вы писали:
T>Чего думать-то? Ясно дело — OpenGL. Особенно если кроме дельфи (ObjectPascal) вы не знаете других языков. T>C (си) интерфейс OpenGL будет куда понятнее, к тому же есть готовые .pas файлы с описанием функций/процедур. T>Ну и в завершении — кроссплаформенность. На будущее. К тому же опыт на OpenGL чаще востребован с т.з. будущего трудоустройства. T>Вот такие мои аргументы.
Серьезная заявка. Каким боком OpenGL поможет в 2D графике? Чем он лучше и понятнее родного DirectX?
Здравствуйте, icezone, Вы писали:
I>>То, что вы называете "составной частью Windows" — лишь часть подсистемы (да и то, вместе с Windows посталяется лишь базовый вариант; полный DirectX нужно накатывать отдельно (к тому же он постоянно обновляется); насчёт OpenGL не помню);
I>С каких это пор полный DirectX надо накатывать отдельно? Он с WinXP идет в базе, для 2D графики никаких серъезных изменений нет.
Для чего же тогда они DirectX redistributables выпускают (в т.ч. и под XP), да ещё и обновляют их несколько раз в год?
Здравствуйте, Ippi, Вы писали:
I>Для чего же тогда они DirectX redistributables выпускают (в т.ч. и под XP), да ещё и обновляют их несколько раз в год?
Это обновления. Для WinXP в базе DX8, для WinXPSP2 в базе DX9, для Vista DX10. Не смотрели чем занимается их инсталлятор?
Он проверяет текущие версии файлов и обновляет только при необходимости. Удалить DX из винды практически невозможно.
В части DirectDraw начиная с 8 версии изменений не обнаружено.
А вот OpenGL как раз таки и не установлен в чистой винде, он устанавливается вместе с драйверами видеокарты.
Здравствуйте, Тимофей, Вы писали:
Т>Всем привет!
Т>Написал программу на дельфи. Много вывода графики на экран, не тянет. Нужно ускорять. Т>Как я понимаю, выбор невелик — opengl или directx — не знаю ни того ни другого, Т>нужно что-то выбрать для освоения.
Т>Какое приложение удобнее распространять и поддерживать?
никого не слушай, находи dxsdk 8.1 или 9.0 самую раннюю, и используй.
только не используй при компиляции последние версии, они будут от юзвера требовать новую версию dx
Здравствуйте, Тимофей, Вы писали:
Т>Новых наворотов мне не нужно, 3D там нет, просто быстро выводить очень много точек напрямую в видеопамять.
А значит OGL ни к чему. Для этого хватит старого интерфейса IDirectDraw7, который есть практически в любой системе. Примеров в сети должн быть достаточно (только рисовать не сразу в видеопамять, а в бэкбуфер, но это детали)
.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, gear nuke, Вы писали:
Т>>Новых наворотов мне не нужно, 3D там нет, просто быстро выводить очень много точек напрямую в видеопамять.
GN>А значит OGL ни к чему. Для этого хватит старого интерфейса IDirectDraw7, который есть практически в любой системе. Примеров в сети должн быть достаточно (только рисовать не сразу в видеопамять, а в бэкбуфер, но это детали)
А всё равно точку в обычном массиве обычного битмапа гораздо быстрее самому поставить, чем вызывать функцию DirectDraw (OpenGL, GDI, GDI+, whatever). Да и проще, пожалуй. Юзанье для такой задачи DirectX напоминает недавнюю отправку тяжёлого атомного ракетного крейсера на борьбу с пиратами на резиновых лодках.
Здравствуйте, Ippi, Вы писали:
I>Юзанье для такой задачи DirectX напоминает недавнюю отправку тяжёлого атомного ракетного крейсера на борьбу с пиратами на резиновых лодках.
Может его направили, чтобы уже наконец уничтожить источник этой гадости в резиновых лодках?
Здравствуйте, Ippi, Вы писали:
I>А всё равно точку в обычном массиве обычного битмапа гораздо быстрее самому поставить, чем вызывать функцию DirectDraw (OpenGL, GDI, GDI+, whatever). Да и проще, пожалуй. Юзанье для такой задачи DirectX напоминает недавнюю отправку тяжёлого атомного ракетного крейсера на борьбу с пиратами на резиновых лодках.
И повторю — в бэкбуфер будет еще быстрее, из-за особенностей видеопамяти.
.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, Тимофей, Вы писали:
Т>Всем привет!
Т>Написал программу на дельфи. Много вывода графики на экран, не тянет. Нужно ускорять. Т>Как я понимаю, выбор невелик — opengl или directx — не знаю ни того ни другого, Т>нужно что-то выбрать для освоения.
Т>Какое приложение удобнее распространять и поддерживать?
Найди для начала чего это у тебя оно тормозит. Чем ты пользуешься для вывода графики сейчас? GDI? Если да и это просто 2d-графика типа нарисовать линию тут, а тут точечку, то не должно ничего тормозить. Не представляю, что там можно рисовать, чтобы оно тормозило, лучши покажи кому-нибудь что ты такое там делаешь.
10 лет назад сталкивался с Дельфи, там был какой-то TCanvas(или это было в С++ билдере? ), это всерьез использовать было нельзя, феерически тормознутая штука, не знаю, изменилось ли там что-то.
opengl или directx целесообразно использовать если ты рисуешь какое-то 3d, с заливками всякими. Для 2d это целесообразно только в особых случаях.
Здравствуйте, icezone, Вы писали:
I>Здравствуйте, traveler, Вы писали:
T>>Чего думать-то? Ясно дело — OpenGL. Особенно если кроме дельфи (ObjectPascal) вы не знаете других языков. T>>C (си) интерфейс OpenGL будет куда понятнее, к тому же есть готовые .pas файлы с описанием функций/процедур. T>>Ну и в завершении — кроссплаформенность. На будущее. К тому же опыт на OpenGL чаще востребован с т.з. будущего трудоустройства. T>>Вот такие мои аргументы.
I>Серьезная заявка. Каким боком OpenGL поможет в 2D графике? Чем он лучше и понятнее родного DirectX?
Что значит каким? Самым непосредственным. Аппаратный блиттинг, со всякими альфами, фильтрацией, аффинными преобразованиями и т.д.
Но на самом деле правильно люди говорят: OpenGL и DirectX по сути одно и тоже, только с разными бантиками.
Если нужна будет кросс-платформенность (включая мобильники), то следует выбрать OpenGL, если нет — можно поизучать DirectDraw — там все просто.
А вообще, для Delphi есть готовая хрень: DelphiX называется. Смотрели такую?
Здравствуйте, traveler, Вы писали:
T>Что значит каким? Самым непосредственным. Аппаратный блиттинг, со всякими альфами, фильтрацией, аффинными преобразованиями и т.д. T>Но на самом деле правильно люди говорят: OpenGL и DirectX по сути одно и тоже, только с разными бантиками. T>Если нужна будет кросс-платформенность (включая мобильники), то следует выбрать OpenGL, если нет — можно поизучать DirectDraw — там все просто. T>А вообще, для Delphi есть готовая хрень: DelphiX называется. Смотрели такую?
Почитайте ТС, ему не нужна фильтрация, ему нужен быстрый вывод графики. Очевидно массивы большие используются для построения графиков. Про различия OpenGL и DX мне рассказывать не надо, я еще с DX5 начинал. Тогда проблем с OpenGL было гораздо больше. DelphiX мне нафиг не нужен, у меня стандартные хидеры. Это вы ТС'у посоветуйте.
Хотя честно говоря я не понял зачем ему вообще понадобилось что-то вместо GDI. Подозреваю, что он не использует сканлайны,
а закрашивает попиксельно — отсюда и тормоза.