DirectX или OpenGL
Вопрос такой - какой из этих итнерфейсов обладает более высоким быстродействием при работе с 2D графикой, при условии их полной аппаратной поддержки?
Честно говоря, вопрос всегда актуальный при выборе, в чем писать, и вместе с тем совершенно неоднозначный.
Если Вам надо программировать в полноэкранном режиме и просто использовать спрайты, возможно с некоторыми растяжениями, а иногда и поворотами, то советую DirectX(DirectDraw). Он довольно понятен в интерфейсном плане, имеет высокую производительность и небольшой объем библиотек.
Но OpenGL дает куда больше возможностей! Там можно задавать порядок действий, а потом его сохранять на выполнение, чтобы производить многновенно, без повтора вычислений. большие возможности работы со шрифтами и т.д.. Но он очень сложен, и нужен хотя бы какой-то опыт работы с такими вещами. Еще в OpenGL "искусственно" реализовано 2D с помощью установки перспективы на ноль и двигания камеры, перпендикулярной плоскости, на которой все нарисовано. Это огромный плюс - потери в скорости нет, а реализовать спрайты еще проще - тот, кто ближе к камере, тот перекрывает остальные. Еще OpenGL в оконном режиме не моргает..
Все!... %)))
Если конкретнее, то я хочу сделать быструю программу для просмотра картинок в оконном режиме. Поэтому как я понял DirectDraw лучше подходит. Только мне исходники надо бы мне достать на C или ASM, чтобы только API функции использовались, без доп библиотек(типа MFC). А то хоть DirectDraw и просто использовать, но документации почти никакой.
Вы, конечно, сделали правильный выбор, поскольку в Вашей программе не нужно обязательно "безморгально" показывать изображение. Я только не пойму, зачем Вам вообще DirectDraw, ведь можно воспользоваться PictureBox и все дела. С подгрузкой изображений других форматов в DirectX b OpenGL такие же проблемы...
А как, с исходниками можете помочь? Мне надо только буфер DirectDraw выделить и к окну его прицепить, всё на API, без MFC.
Никаких PictureBox'ов мне не надо, главное - скорость. Я вообще без дополнительных модулей хочу писать, наверное на Intel C++, а библиотеки для поддержки форматов на чистом асме.
А как, с исходниками можете помочь? Мне надо только буфер DirectDraw выделить и к окну его прицепить, всё на API, без MFC.
Я для DirectDraw писал только из-под VB... Но если надо, то от туда можно выковырять последовательность обращений к функциям DirectX и переткнуть в VCPP... это не проблема, ведь как и в Си++ там код модуля, орудующего с буферами и их обрезанием (и др.) связывает с остальной программой лишь HWND окна, куда прикреплять %) Если нужен этот пример, я к Вашим услугам!... %)
Ну если в примере не будут использоваться объекты для работы с DirectX, то лишним он не будет.
OK! Заметано! Тебе как, мылом, или тут выложить?
Выложи тут, может ещё кому-нибудь пригодиться.
Ага! Я тут еще сделал удобные сплиттеры (непростой алгоритм, если делать нормально %)). В общем, юзайте на здоровье! если будут вопросы - задавайте!
Тут есть проблема, я не знаю basic, может всё же на С перепишешь? Ну знал бы я его, сам бы переписал, а так не могу.
У меня очень много забот сейчас... %( неужели нет нигде нормальной доки по этой теме? Я как-то сам тогда справился, причем эту самую доку собирал не более часа %)...