> Давайте так: напишите, пожалуйста, работающий код для OpenGL, как оно должно работать.Ты действительно этого хочешь? Я как-то начал ревёрсить supaplex, и у меня к нему вроде как даже написан код, который в OpenGL засовывает палитрованные спрайты и получает на выходе картинку. А, не, не в OpenGL, а в gfx-rs, который типа вулкана, но одевается на любой API, в том числе и на OpenGL. Но он хранит все спрайты статично в видеопамяти, там и там шейдер выполняет преобразования палитры в RGB, в процессе текстурирования квадратов на экране.
Он довольно сраный код, потому что моей задумкой было изначально получить API аналогичный VGA, который бы сваливал всю работу на GPU, чтобы переписывать досовый 16-битный асм с минимумом изменений. Но потом, я понял, что это не обязательно и пошёл другим путём. Но не стал переписывать уже написанное. Но тем не менее, он вполне рисовал, и даже некоторые VGA трюки, типа палитровой анимации работали.
Там правда нет двуслойных спрайтов, но... эмм... если ты сведёшь задачу к минимуму, чтобы мне не надо было ковыряться в недрах говнокода fheroes2, чтобы понять, что там за форматы данных, и как вообще взаимодействовать с этим говнокодом... например, если ты дашь мне пачку спрайтов, и плюс сопутствующую информацию типа палитр, внятное описание всего этого, и ответишь на мои вопросы по всему этому, то я наверное смогу найти время, чтобы написать тебе демку, которая всё это отрисует видеокартой. И будет перерисовывать видеокартой. Насчёт 3 байтов по шине на кадр, я правда наврал, но то что она будет пересылать по шине на порядки меньше чем 640x480*4 бита на кадр, это совершенно точно.
Я могу написать такую демку, чтоб понятно было, и даж могу это попробовать на C++ сделать, а не на расте, если ты вежливо попросишь.
> Многие вещи, указанные вами, основаны только на предположениях.
Ты про то, как HOMM2 отрисовывал? Да, это предположения, но я ковырялся в некоторых досовых играх, и дохрена читал про VGA. Я представляю как рендер делался тогда. Плюс, я точно помню, что HOMM2 вполне шли на 386. Хотя они умудрялись тормозить там... Ну хз, хз. Но вообще, не использовать VGA, используя VGA, элементарно не выйдет. А если все четыре битовые плоскости грузить из CPU в видеокарту на каждый кадр, то... Ну может тогда и получатся такие тормоза. хз. Но если и так, это лишь говорит, что оригинальная игра тоже совершенно не умела в рендер.
> Абстракция класса была сделана для того, чтобы скрыть SDL от всего остального.
Ой, так я же не возражаю против "абстракции класса" или инкапсуляции низлежащих API. Я возражаю против неумеренного и абсолютно неуместного использования virtual. И против глобальных переменных. И против if(ptr==NULL).
> OpenGL в коде нет.
Совершенно зря.
> Для мобильных устройств свой OpenGL.
Он не настолько другой. Почти то же самое. Немного порезан, насколько я помню. По-моему, даже не столько порезан, сколько оттуда выкинуты нахрен все эти glVertex, glNormal, glTexCoords и прочие функции нужные для собирания данных в один большой массив, с которым GPU сможет работать. Но они и не нужны, массивы эти можно собрать хоть статически.
> Оригинальная игра
> никакие вычисления на GPU не делала, советую глянуть в исходники. Генерация
> картинки была на CPU.
Во-первых, я не говорил о том, что оригинальная игра отрисовывала на GPU. Так сказать было бы глупостью: тогда не было никаких GPU. Но тогда был VGA, который позволял в разы уменьшить количество пересылаемых данных между CPU и видеокартой, по сравнению с заливкой в видеокарту каждого пикселя каждого кадра. Во-вторых, что за исходники? Сорцы HOMM2? Я б глянул. Где их взять?
> Попрошу высказывания о некоторых аспектах ООП высказывать на специализированных форумах.
Не учите меня жить.