LINUX.ORG.RU
ФорумGames

Зачем 2D движку opengl?

 


0

2

При попытке запуска некоторых 2D игр и движков на ноутбуке, где поддерживается OpenGL 2.0, получил ошибку, которая говорила об отсутствии OpenGL 2.1. И у меня возникает вопрос, зачем OpenGL там, если скорости процессора хватит на обработку 2D графики без аппаратного ускорения

зачем OpenGL там, если скорости процессора хватит на обработку 2D

незачем

masa ★★
()
Ответ на: комментарий от enot_obrmot

OpenGL это просто API для работы с графикой. И в винде либо он, либо DirectDraw/Direct3D. Работа с 2D графикой через GDI жутко медленная.

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

Ну вот я хотел запустить godot, love 2d и не смог, пожаловались на это. Я хочу создать 2d игру, а движков, которые бы могли работать на xp и opengl 2.0 не нахожу.

enot_obrmot
() автор топика
Ответ на: комментарий от ya-betmen

Потому, что не понял, почему им вдруг opengl нужен. Или вы считаете, что на форуме ничего другого спросить нельзя?

enot_obrmot
() автор топика
Ответ на: комментарий от enot_obrmot

Нужны ископаемые движки. OpenGL 2.0 это 2004 год, так-то. И ЕМНИП, программный OpenGL в XP ограничен еще более ранней версией, то ли 1.3, то ли вообще 1.0.

Khnazile ★★★★★
()
Ответ на: комментарий от enot_obrmot

Ну я знаю как в лине подсунуть произвольную циферку в версию опенгла, а в винде хз.

ya-betmen ★★★★★
()
Ответ на: комментарий от enot_obrmot

Винда у тебя чтоль? XP? Тогда вопросы к ней, там по умолчанию OpenGL 1.1 вроде. Так что тебе нужно установить OpenGL библиотеки.

Или пересобирать/патчить love2d для включения программного рендеринга в используемом им SDL2/SDL3.

Переходи на Linux. У тебя целая ★ же уже, пора :)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от enot_obrmot

Помню была такая штука как Blitz 3D, у него встроенный язык свой, он оч древний, умирал и возрождался много раз, сейчас вроде вообще он открыт. Я уверен есть версии для древней винды и для современного линукса. Может тебе зайдёт.

Разные уже готовые сборки ,тех времён когда его код был закрыт, можно найти в сети.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Зачем 2D движку opengl?

В двадэ всё ещё нужны текстуры, шейдеры, постпроцессинг и вот это вот всё, что в графическом api дают.

Я хочу создать 2d игру, а движков, которые бы могли работать на xp и opengl 2.0 не нахожу.

Думаю, что тут нужно хорошо посидеть и подумать о «ехать» и «шашечки».

Bfgeshka ★★★★★
()
Ответ на: комментарий от Khnazile

Работа с 2D графикой через GDI жутко медленная.

Не выдумывай. 2D графика безо всяких opengl летала ещё 25 лет назад. Просто кто-то ничего не умеет и суёт везде 3д ускорители без надобности.

firkax ★★★★★
()

И у меня возникает вопрос, зачем OpenGL там, если скорости процессора хватит на обработку 2D графики без аппаратного ускорения

Например чтобы снизить энергопотребление (чтобы ноутбук не был как турбина самолёта) или высвободить ресурсы CPU на логику игры.

X512 ★★★★★
()

У тебя интел встройка? Вкинь сюда своё железо, может, оно очень даже хорошо работает под линуксом, а мы подскажем ньюансы.

Merionet
()
Ответ на: комментарий от enot_obrmot

Я хочу создать 2d игру, а движков, которые бы могли работать на xp и opengl 2.0 не нахожу.

У тебя целых два варианта:

1) gcc

2) msvc5/6

firkax ★★★★★
()

А откуда уверенность что процессора хватит? И чем принципиально 2д графика отличается от 3д? Меньше пикселей на экране от того что это 2д?

neumond
()
Ответ на: комментарий от enot_obrmot

Ну, бери SDL2, включай там программный рендеринг, и в путь тогда, будь готов компилять =) Но ты хочешь именно что движок, или хотя бы солянку библиотек с одним API аля love2d.

Хотел тебя послать сюда

Но сайт умер :(

Так что сюда

Там просто хренова туча, просто прорва информации, поищи, подбери себе инструмент для твоей старой ОС, только вот, работать оно будет в линуксах разве что под wine или типа того.

Если прям совсем без всего, то терминал =)

Отвечая на твой основной вопрос, сейчас (как и 20 лет назад) ПО для интерактивной графики по умолчанию пытается задействовать аппаратное ускорение если оно есть, под линуксами это конечно же opengl. Ты либо подбери ПО для реализации задумки тех лет в которые твоя рабочая ОС была актуальна, и у тебя не будет никаких проблем, за исключением того что твоя программа возможно только там и будет запускаться и нельзя будет сделать родной порт на Linux. Или попытайся заставить работать что-то более менее современное, либо вообще без использования аппаратного ускорения, либо пусть использует, но только до opengl 2.0 или использует родной directx как blitz3d.

Сам по себе opengl тут не причём в принципе, просто ты взял то что предполагает его наличие, и наличие его поддержки в нужной минимальной версии.

Можно взять SDL1.2 оно точно работает на всём что было в те годы. А с некоторыми изменениями или без них, можно будет собирать и запускать хоть на windows 98, хоть на распоследнем Arch Linux.

Учитывая какой ты вопрос задаёшь и как ты его задаёшь, может тебе лучше даже конструкторы подойдут

Ищи что понравится и химич свою игрушку.

Ну или всё же попробуй накатить Linux. Live версии потыкай, если твоя карточка заведётся ускорение будет из коробки,
увидеть можно так glxinfo -B

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от enot_obrmot

Так она вроде r300 поддерживается, попробуй, запусти со свежей мезой, будет ли ускорение.

Merionet
()
Ответ на: комментарий от LINUX-ORG-RU

Вот шутки шутками, но я обнаружил, что часть игр на библиотеке Allegro 5 запускаются спокойно без opengl 2.1, а другим пришлось mesa давать, и они лагали

enot_obrmot
() автор топика
Ответ на: комментарий от enot_obrmot

Увы, на том ПК стоит windows xp… Но даже так, это смешно

Ну так виндузятники и должны страдать :)

pihter ★★★★★
()
Ответ на: комментарий от firkax

Ну попробуй запусти ntdoom. Он тормозит даже на пентиуме. Более-менее нормальный порт Doom на NT появился только когда туда пришел DirectX. Как раз из-за работы через GDI. Просто современные компы настолько мощные, что на них тормоза GDI не особо заменты, а может и сама реализация API с тех пор моменялась.

Khnazile ★★★★★
()
Ответ на: комментарий от enot_obrmot

Я хочу создать 2d игру

Я уже джва дня жду что кто-нибудь пошутит про корованы…

pihter ★★★★★
()
Ответ на: комментарий от enot_obrmot

Пиши свой движок, тем более 2д игру делать собрался.

devl547 ★★★★★
()

Я может ошибаюсь, но вообще насколько я знаю, у любой видеокарты API делается для 3D. 2D-графика это частный случай использования этого API. OpenGL это один вариантов работы с видеокартой.

Т.е. у процессора нет никакого способа выводить изображение мимо видеокарты. Даже если ты какое-то изображение пикселями нарисуешь в памяти, тебе нужно потом создать текстуру, загрузить эту текстуру в видеопамять и нарисовать двумя треугольниками квадрат, на который натянуть эту текстуру.

В таких условиях не использовать OpenGL или подобный API даже для 2D-графики это просто глупо. Всё, чего ты добьёшься - будешь впустую греть воздух, пересылая гигабайты по шине между основной памятью и видеопамятью. Куда проще рисовать сцену сразу средствами видеокарты.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Кстати сайт заработал, спасибо за ссылку

masa ★★
()

зачем OpenGL там, если скорости процессора хватит на обработку 2D >графики без аппаратного ускорения

Вопросы: 1)зачем делать хорошо, если можно делать плохо 2) почему мне не дают делать плохо 3)как сделать плохо в Windows XP

отвечаю. Windows XP не существует. В новых версиях Windows их графический интерфейс работает через DirectX, потому что его ускоряют видеоадаптеры. По этой же причине в Windows и OpenGL работает через DirectX. Раньше были Direct2d и Direct3d для 2 и 3-мерной графики. Но поскольку 2-мерная графика является частным случаем 3-мерной, то Direct2d был отменён как излишний. Как сделать плохо в Windows XP - уже ответили.

Partisan ★★★★★
()
Ответ на: комментарий от Khnazile

OpenGL это просто API для работы с графикой.

Я бы по-другому сформулировал: OpenGL (начиная с 2.x) это просто API для вычислительных операций с точками в 3д-пространстве и пикселями на плоскости, с возможностью использовать для этого GPU. Вычисления не совсем произвольные, но натянуть на эту концепцию можно очень много всего. В частности, в 2д-графике OpenGL используют для композитинга. Например, если нужно наложить одну картинку на другую с полупрозрачностью, это по сути простая операция вида A*X + Y, где X и Y значения пикселей двух картинок, а A - значение альфы. Такие операции с большим количеством пикселей GPU молотит очень быстро за счёт параллелизма. Ещё OpenGL в 2D используют для более сложных эффектов типа блюра — тоже вычислительная операция с матрицей пикселей.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Ну ладно, но почему движки нельзя было делать на opengl 2.0 даже, или такие, которые бы могли и через directdraw, и через opengl выводить картинки

enot_obrmot
() автор топика
Ответ на: комментарий от enot_obrmot

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

Khnazile ★★★★★
()
Ответ на: комментарий от enot_obrmot

Хех. В играх под дос ещё больше ограничений чем просто 2д. Вращения, растягивания и всякие параллаксы требуют ускоритель, ну или можно играть с 10фпс в 640 на 480, с палитрой в 256 цветов на процессоре.

neumond
()
Последнее исправление: neumond (всего исправлений: 1)
Ответ на: комментарий от enot_obrmot

Если всё верно, то на Linux вполне может быть поддержка OpenGL 2.1 (источник, колонки «R300/R400», «R500», «R600/R700»).

Единственная проблема - отсутвие поддержки NPOT, хотя по спецификации она должна быть. Цитата из OpenGL wiki:

The R300 and R400-based cards (Radeon 9500+ and X500+) are incapable of generic NPOT usage, despite allegedly supporting OpenGL 2.0 (which requires full support). These cards only allow you to use NPOTs if the texture has no mipmaps. 

Если кратко, то поддержка NPOT позволяет использовать текстуры размерность которых отлична от степени двойки. В твоём случае использовать подобные текстуры можно только в том случае, если не используется мипмаппинг (можешь погуглить что это такое).

Касательно выбора «движка», то я подписываюсь под советом использовать SDL1.2/SDL2/SDL3/SFML. Это конечно не полноценные игровые движки, но написать 2D-игру на них написать будет не трудно. Если хочешь «настоящий игровой движок», то советую взглянуть на Castle Engine. Он крайне неприхотлив в плане требований к железу, точно заведётся на любой картофелине. Однако, програмировать придётся на современной ОС.

mak8kammerer
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.