1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Тема в разделе "Мастерская", создана пользователем Jordan 63, 26 окт 2022.

  1. Tigoro

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    2.937
    архив выложить? но поскольку все "не авторское", то в плане обучения возможно толка мало будет (т.е. на сколько правильный код тех или иных решений, большой вопрос, не всегда логику другого возможно понять), поскольку меня интересовало либо что-то несложное подправить, либо запустить вообще
     
    Последнее редактирование: 12 ноя 2022
  2. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Хорошая идея. Ещё есть вариант, перевернуть текстурными координатами при рисовании.
     
  3. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Tigoro, спасибо. Достаточно ссылок на наиболее интересные вам проекты. А правки лучше оформлять как pull request для всеобщей пользы )
     
  4. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
  5. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Jordan 63, Применение glscale с отрицательным аргументом к текстурной матрице переворачивает текстурные координаты
     
  6. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Напишите код сюда плиз. Я в OpenGL ещё плаваю, опыта у меня с ним не было. Вообще с 3d никогда толком не работал.
     
  7. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Jordan 63, чуть позже посмотрю код и и дам фикс. Картинка неправильно повернута по одной оси или по обеим?
     
  8. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Я сейчас далеко от ПК, пишу со смартфона. Я её переворачиваю с помощью stb_image
    Lib-LDL/ImageLoader.cpp at b14f1b68f7ebd45ac7dc2190781deb18f4f9df6a · JordanCpp/Lib-LDL

    Иначе OpenGL рисует её перевёрнутой. Я стинул пример со стековерфлоу. :)
     
  9. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Jordan 63, лучше переворачивать перед выводом
     
  10. Tigoro

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    2.937
    У меня конкретно вот так отображается. Поскольку это под wine, то в каких-то случаях может быть ошибка не совместимости.
    Зеркальное отображение происходит, морда смотрит в оригинале тоже направо. Это в 05_Cpu_image.exe. Кораблик нормально отображается.
     

    Вложения:

    Последнее редактирование: 12 ноя 2022
  11. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Всё правильно это моя недоработка, ещё и альфа не учитывается. Нужно просто исправить.
     
  12. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Jordan 63, надеюсь код поможет:

    glMatrixMode(GL_TEXTURE);
    glLoadIdentity();
    glScaled(-1.0,1.0,1);
    glBegin(GL_QUADS);
    glTexCoord2i(0, 0);
    glVertex2i(x, y + h);
    glTexCoord2i(0, 1);
    glVertex2i(x, y);
    glTexCoord2i(1, 1);
    glVertex2i(x + w, y);
    glTexCoord2i(1, 0);
    glVertex2i(x + w, y + h);
    glEnd();
     
  13. Tigoro

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    2.937
    По поводу альфы - не известно. Возможно привет моей сборке wine или моим настройкам.
    --- добавлено 12 ноя 2022, предыдущее сообщение размещено: 12 ноя 2022 ---
    @Bobbie, конкретно по ссылкам этот репозитарий стоит посмотреть cyxx - Repositories
    К сожалению, сейчас другие не подскажу, потому что либо в коде программу сохранил себе нужную с информацией об источнике, либо ссылки давал раньше в каких-то темах здесь. То что касается моих находок, некоторые с доработками - архив временно выложил, позже удалю.
    250мб 7z, внутри 1Gb zip с нулевым сжатием, внутри 50к+ файлов разных проектов\поделок, все структурировано по каталогам.
    Некоторые вещи сугубо под линукс, но кросс-платформенного много. Источники - тот же гитхаб, личные сайты, sourceforge и некоторые другие git-серверы (по названиям только первые два помню).

    Может быть что-то полезное все же найдете.
    "А правки лучше оформлять как pull request для всеобщей пользы )"
    В целом да, но поскольку все это делалось для себя и локально, то по-правильному сделать это уже не получится, либо нужно делать работу ради работы, для того чтобы было сделано все так, как должно было быть изначально. А у меня даже учеток во всех этих сервисах нет )
     
    Последнее редактирование: 12 ноя 2022
  14. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Не переворачивает. Погуглю основы OpenGL, glRotate, glTranslate и.тд
    --- добавлено 12 ноя 2022, предыдущее сообщение размещено: 12 ноя 2022 ---
    Вот такой код работает.

    Код:
       
        glMatrixMode(GL_TEXTURE);
        glLoadIdentity();
        glRotatef(180, 0, 0, 1);
    
    --- добавлено 12 ноя 2022 ---
    Почти получилось:)

    upload_2022-11-12_21-26-22.png

    Нужно понять матрицы и преобразование OpenGL
     
  15. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Jordan 63, извините за не рабочий кусок. На моем старом коде способ работал успешно. И поздравляю с решением проблемы.
    --- добавлено 12 ноя 2022, предыдущее сообщение размещено: 12 ноя 2022 ---
    @Jordan 63, bmp внутри хранит изображение с инвертированными координатами. Может в этом дело
     
  16. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Нет не в этом дело. Я png гружу. Почитал как работает OpenGL с текстурами. И он как раз ожидает перевёрнутых по y.

    В итоге починил. Задал другие текстурные координаты. Теперь всё работает как и ожидается.
     
  17. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    @Jordan 63, вы про порядок следования вызовов glVertex2i? Находил нужный опытным путем
    --- добавлено 12 ноя 2022, предыдущее сообщение размещено: 12 ноя 2022 ---
    И для всех желающих ссылка на сжатый, но информативный учебник по openg - 2D-приложения OpenGL и FreeBasic(перевод с нем.) - FreeBasic
     
  18. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
    Нет изменил только текстурные координаты. Вот визуализировал для наглядности.

    Что бы OpenGL вывел корректно текстуру ему нужно подать такого динозавра как на картинке. Я загружаю нормального НЕ перевернутого динозавра. После чего для того что бы OpenGL вывел его корректно, я переворачиваю текстуру по текстурным координатам, как показано стрелочками. И в итоге, CpuRender и GpuRender корректно рисуют изображение.

    upload_2022-11-12_23-37-24.png
    --- добавлено 12 ноя 2022, предыдущее сообщение размещено: 12 ноя 2022 ---
    И как раз это решило проблему с выводом CpuImage с помощью glTexSubImage2D.
     
  19. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    135
    А я немного другим путем шел. Загонял текстурные и вершинные координаты в массив для вывода через glDrawArrays и правил текстурный массив до нужного результата
     
  20. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    480
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление