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

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

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

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.133
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. New_Old_Gamer

    New_Old_Gamer

    Регистрация:
    30 окт 2015
    Сообщения:
    19
    @daemolisher, спасибо.

    На самом деле я отсылался к словам Bato-San, когда он говорил о том, что всю мою программу можно перебрать из 120 в 10-20 строк.

    А насчёт функций... Я просто хотел написать предельно проще, а потом переделать в уже что-то большее, но как говорится : "Нет ничего более сложного, чем самое простое, как нет ничего более постоянного, чем временное". Только сам себя запутал.

    Я использовал изначально функцию INPUT$(1), коя при отсутствии задачи файла считывает заданное кол-во символов с клавиатуры. А насчёт INKEY$ - не знаю. Не пробовал.
     
  4. nop

    nop

    Регистрация:
    5 дек 2014
    Сообщения:
    2.297
    Автор не пробовал турбопаскаль?
     
  5. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Лучшая, из свободных, IDE Code::Blocks наконец-то выпустила очередной релиз. Кроме того, что это наиболее стабильная, быстрая и вменяемая после Visual Studio IDE, у них отличная команда, которая уже много лет медленно, но неумолимо продолжает работать. В общем, вот - http://codeblocks.org/
     
    daemolisher, Alex Kagansky, hobot и 2 другим нравится это.
  6. New_Old_Gamer

    New_Old_Gamer

    Регистрация:
    30 окт 2015
    Сообщения:
    19
    Жалко не знаю ни Си, ни Фортрана, а так бы воспользовался...
     
  7. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    Так может быть лучше изучить Си?

    По моему мнению, на языке Си проще написать игру, чем на языке BASIC.

    Много готовых библиотек, упрощающих разработку игр (как под Windows, так и под DOS)
    Например, SDL или Allegro.
     
  8. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    вот не надо ляля то. Дело не в языке далеко. И си - не панацея, а лишь модный диагноз.

    Ну рекомендовать готовые библиотеки - вообще моветон. А потом удивляемся "откуда бы столько шаблонного говнища в игрострое ? Айяйяй !"

    А всё потому что вот такие вот советы дают -"учи си, ипользуй библиотеки и копипасту, не будь самым умным, будь как все. учи си."
     
    Последнее редактирование: 2 фев 2016
  9. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Бейсик по жизни, конечно, очень пригодится. Нужнейший язык в самых интереснейших областях разработки - это, безусловно, Бейсик.
     
    Guyver и radzh нравится это.
  10. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @Steel Rat, ну и почему на бейсике(паскале, плм, лиспе, прологе и т.д.) внезапно стало нельзя писать игры или что то ещё ?

    Продолжать не рекомендую ибо читаем первый пост и перемещаемся в другую тему.
     
    Последнее редактирование: 2 фев 2016
    New_Old_Gamer нравится это.
  11. Guyver

    Guyver

    Регистрация:
    2 окт 2005
    Сообщения:
    4.959
    Ну человек же нормально спрашивает конкретные вопросы, чо его общей теорией и сями парить? @New_Old_Gamer, я сейчас навскидку не помню, но тебе надо в сторону inkey$ копать, да. Посмотри какую-нибудь игрульку на кубейсике, типа тех же Горилл. Она вроде даже тут выложена на сайте.
     
    New_Old_Gamer нравится это.
  12. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Ну, я тоже начинал с Бейсика (тяжко шло, первый язык же), потом Паскаль (привыкать ко всему заново), потом С++ (привыкать ко всему заново). Сейчас, с высоты (небольшой) своего опыта, я бы посоветовал самому себе в прошлом начать с Си, потом С++. Разумеется, что можно писать, что угодно на чём угодно. Тем более, если есть желание.
     
    fR0z3nS0u1 и New_Old_Gamer нравится это.
  13. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Изучаю тут по-тихоньку OpenGL. И вот надо скопировать из текстуры в текстуру кусок.
    Код для Open GL 3.1 выглядит вот так:
    Код:
    void CopySubTexture(const Texture* dest, const Texture* src, int srcX, int srcY, int destX, int destY, int width, int height)
    {
        GLuint fboRead = 0, fboDraw = 0;
        glCheck(glGenFramebuffers(1, &fboRead));
        glCheck(glGenFramebuffers(1, &fboDraw));
    
        glCheck(glBindFramebuffer(GL_READ_FRAMEBUFFER, fboRead));
        glCheck(glBindFramebuffer(GL_DRAW_FRAMEBUFFER , fboDraw));
    
        glCheck(glBindTexture(GL_TEXTURE_2D, src->GetId()));
        glCheck(glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, src->GetId(), 0));
        glCheck(glReadBuffer(GL_COLOR_ATTACHMENT0));
    
        glCheck(glBindTexture(GL_TEXTURE_2D, dest->GetId()));
        glCheck(glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, dest->GetId(), 0));
        glCheck(glDrawBuffer(GL_COLOR_ATTACHMENT0));
    
        GLuint statusRead = glCheckFramebufferStatus(GL_READ_FRAMEBUFFER);
        GLuint statusDraw = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
    
        if (statusRead == GL_FRAMEBUFFER_COMPLETE && statusDraw == GL_FRAMEBUFFER_COMPLETE)
        {
            glCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, destX, destY, srcX, srcY, width, height));
        }
        glCheck(glDeleteFramebuffers(1, &fboRead));
        glCheck(glDeleteFramebuffers(1, &fboDraw));
    }
    
    Код для OpenGL ES 2.0 так:
    Код:
    void CopySubTexture(const Texture* dest, const Texture* src, int srcX, int srcY, int destX, int destY, int width, int height)
    {
        GLuint fboRead = 0, fboDraw = 0;
        glCheck(glGenFramebuffers(1, &fboRead));
        glCheck(glGenFramebuffers(1, &fboDraw));
        glCheck(glBindFramebuffer(GL_FRAMEBUFFER, fboRead));
        glCheck(glBindFramebuffer(GL_FRAMEBUFFER , fboDraw));
    
        glCheck(glBindTexture(GL_TEXTURE_2D, src->GetId()));
        glCheck(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, src->GetId(), 0));
    
        glCheck(glBindTexture(GL_TEXTURE_2D, dest->GetId()));
        glCheck(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, dest->GetId(), 0));
        GLuint status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
    
        if (status == GL_FRAMEBUFFER_COMPLETE)
        {
            glCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, destX, destY, srcX, srcY, width, height));
        }
        glCheck(glDeleteFramebuffers(1, &fboRead));
        glCheck(glDeleteFramebuffers(1, &fboDraw));
    }
    У меня два вопроса:
    - Что здесь совсем страшно и неправильно? (Про то, что glGenFramebuffers можно вызвать один раз для двух буферов я знаю)
    - Под виндой работают обе функции одинаково. Нафига мне тогда городить огород с GL_READ_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER, glReadBuffer, glDrawBuffer?

    @SAS что с подсветкой синтаксиса, не пойму?
     
  14. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    494
    Привет всем!
    Имеется программа, в которой генерирует модель на основе полученных данных
    В ней заложено ограничение в 4096 вертексов на модель.
    Через OllyDbg нашел проверки на их количество, увеличил лимит, но программа стала падать.
    Я понимаю что она падает из-за того что в каком-то массиве стоит опять же это ограничение.

    Подскажите пожалуйста как найти это ограничение.
     
  15. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    @Eugeny1987, может это аппаратное ограничение?
     
  16. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    494
    какое еще аппаратное ограничение?

    вероятно вот так задан этот лимит
    #define MAXLOADVERTS 4096
     
    Последнее редактирование: 5 фев 2016
  17. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
  18. Guyver

    Guyver

    Регистрация:
    2 окт 2005
    Сообщения:
    4.959
    @Eugeny1987, а на что хоть увеличил то? На какое значение поменял?
     
  19. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    494
    @Guyver, 8192
    --- добавлено 6 фев 2016, предыдущее сообщение размещено: 6 фев 2016 ---
    В общем какой-то прогресс есть, что-то там напатчил в итоге падает в другом месте, оператор REP

    MOV ECX,57
    REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

    Watches
    Expression Value
    EDX 3D5 (981.)
    SS 2B (43.)
    DS 2B (43.)
    ECX 30 (48.)
    ES 2B (43.)
    EDI 2669000 (40275968.)
    EBP 2668F64 (40275812.)
    ESI 26C3648 (40646216.)
     
  20. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    чот вспомнилось - в движке Unity раньше было ограничение в 65535 поликов на модель - вроде как, геометрия индексированная, а на индексы отвели 16 бит (ushort ?).


    @Eugeny1987, может быть тож чтот такое? не хватает бит, чтоб проиндексировать - вот и падает
     
  21. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    494
    @daemolisher, да кто же его знает, ассемблер для меня темный лес
     
  22. Reflector

    Reflector

    Регистрация:
    9 апр 2014
    Сообщения:
    7
    Детали не очень помню, но у меня есть похожий код без glReadBuffer и glDrawBuffer, а вместо glCopyTexSubImage2D используется glBlitFramebuffer.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление