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.151
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

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

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

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

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

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    @Reflector glBlitFramebuffer отсутствует в OpenGL ES 2.0, к сожалению. Был бы у меня планшет с видео поддерживающим ES 3.0, я бы и не парился. Хотя... пока я там это всё допишу, можно пока и на эмуляторе GLES 3.0 поработать.
    --- добавлено 6 фев 2016, предыдущее сообщение размещено: 6 фев 2016 ---
    Код:
            glCheck(glGenFramebuffers(1, &fbo));
            glCheck(glBindFramebuffer(GL_FRAMEBUFFER, fbo));
            glCheck(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, oldTexture.GetId(), 0));
            glCheck(glBindTexture(GL_TEXTURE_2D, newTexture.GetId()));
            GLuint status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
    
            if (status == GL_FRAMEBUFFER_COMPLETE)
            {
                  glCheck(glCopyTexSubImage2D(GL_TEXTURE_2D, 0, left, top,
                            srcLeft, srcTop, width, height));
            }
            glCheck(glDeleteFramebuffers(1, &fbo));
    Можно обойтись одним FBO и для OpenGL 3.1 и для OpenGL ES 2.0 этот код работает одинаково.
     
    Последнее редактирование: 28 фев 2016
  4. iunnamed

    iunnamed

    Хелпер

    Регистрация:
    15 янв 2007
    Сообщения:
    1.202
    Если массив статический, то увеличение константы ничего не изменит - программа, похоже, из-за этого и падает.
     
    Eugeny1987 нравится это.
  5. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    Это цикл копирования данных в массив, для которого была отключена проверка на верхнюю границу.
    Действительно, как уже сказали выше, просто отключением проверки ничего не поделать.
    Пробовали копнуть глубже? Мне отчего-то кажется, что раз уж есть сегфолт — то память вполне может выделяться динамически.
    Поищите по вызовам malloc/calloc/realloc, и дополнительно по LocalAlloc/GlobalAlloc/VirtualAlloc/HeapAlloc.
    [UPD:] ну и *ReAlloc туда же: в MSDN есть описания.
     
    Последнее редактирование: 9 фев 2016
    Eugeny1987 нравится это.
  6. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    495
    @hidefromkgb, @iunnamed, спасибо, поглядел
    нашел где память выделяется, там выделялось 4096, увеличил до 65536 не помогло

    По скриншоту:
    Изначально было указано 1000, он здесь проходил и не падал, увеличил до 2000, он стал падать в первом TEST DWORD между SUB и CMP, увеличил до 10000 - результат на картинке

    ai.imgur.com_hMbdQnl.png
     
  7. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    @Eugeny1987, а как происходит вызов?
    Просто, по коду судя, здесь происходит открутка массива на 0x10000 байт назад (SUB ECX, 10000), что намного больше 0x2000 байт выделенных.
     
  8. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @Eugeny1987, а не проще дать людям всю программу на разборки, чем показывать куски кода и пытаться наугад менять непонятно что ? Глядишь уже и сделали бы всё.
     
  9. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    @Bato-San, это, конечно, оптимально с практической точки зрения, однако абсолютно бесполезно с дидактической. Вдруг человек сам хочет научиться?
     
  10. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @hidefromkgb, учатся на крякми и солюшенах. Здесь же конкретная задача. С дидактической точки зрения в таком случае все советы данные по вопросу - во вред, тем более, что дававшие делают это откровенно наугад. Хотите учить - разберитесь в материале.
     
  11. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    @Bato-San, ну что Вы мне сказки рассказываете, я сам исключительно на практике учился.
    Что касается «откровенно наугад»… впрочем нет, не буду здесь оффтопить.
    Отмечу лишь, что эмоции, которые вызывает у одного пользователя OG другой пользователь OG, не должны искажать объективности оценки.
     
  12. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @hidefromkgb, Я предложил дать нам объект исследования, что объективно и правильно. А ты начал изображать из себя педагога, наплевав на первый пост темы. Вот вся объективная оценка.
     
  13. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    Offtop
    Рационализа́ция (лат. rationalis — разумный, лат. ratio — разум) — механизм психологической защиты, при котором в мышлении используется только та часть воспринимаемой информации, и делаются только те выводы, благодаря которым собственное поведение предстаёт как хорошо контролируемое и не противоречащее объективным обстоятельствам.
     
    Последнее редактирование: 10 фев 2016
  14. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    495
    1. Никто не предложил
    2. Как-то наглеть не хочется
     
  15. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @Eugeny1987, ну если не сильно варез - выложи куда ниить. глядишь - педагоги чутка класс покажут. может даже "мастер" ;)
     
  16. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Константа в коде может использоваться over 9000 раз. Без глубочайшего понимания предмета отловить подобные вещи дело практически безнадёжное.
     
  17. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    495
    пожалуйста, во вложении

    текущий лимит 4096
     

    Вложения:

    • buildmds.zip
      Размер файла:
      356,2 КБ
      Просмотров:
      41
  18. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    Знач так. Только что пришёл с работы уставший аки собака, поэтому буду краток.

    То, что Вы «нашли» на скриншотах — это не 4096 вершин, а 4096 байт стандартной страницы памяти Windows. Память эта в программе выделяется на стэк (не знаю по каким причинам, может статься у автора malloc-о-фобия), а наиболее удобный метод попросить у винды ещё одну страницу стэка — обратиться к ней. Ядро всегда держит на его макушке так называемую «сторожевую» страницу, и если видит обращение к ней — то немедленно её выделяет. Т.е., если обратиться к ячейке памяти ровно на 1 страницу выше, программа таким образом просто запрашивает себе ещё памяти. И увеличив длину перехода до 0x2000, Вы вылезли за сторожевую страницу и угодили в никуда: отсюда и сегфолты.
    На самом же деле, проверки, отключающие жалобы об ограничениях, находятся по адресам 0x402FA0, 0x40320E и 0x40BFFA. Однако отключение только их троих делу не поможет, поскольку эта волшебная константа 4096 прошита в куда большем количестве мест, искать которые прямо сейчас у меня ни сил, ни желания.
    Вполне вероятно, что проще Вам будет взять спецификацию формата MDS, по которой, сдаётся мне, и писалась выложенная приблуда, и реализовать преобразователь самому.
    --- добавлено 12 фев 2016, предыдущее сообщение размещено: 12 фев 2016 ---
    А, ну и да. @Bato-San, по уму Вас за такое стóит зарепортить уже. Достали уже выносить свою фрустрацию на люди.
     
    AxXxB нравится это.
  19. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @hidefromkgb, мне было интересно в каком месте своего панегирика вы скажете
    подтвердив своим примером слова
    и доказав практическую справедливость

    Именно по этой причине я рекомендую всем страждущим выкладывать сабж или ссылки, если требуется конкретное решение достаточно сложной проблемы.
     
    Последнее редактирование: 12 фев 2016
  20. hidefromkgb

    hidefromkgb

    Регистрация:
    20 дек 2011
    Сообщения:
    145
    @Bato-San, это сейчас о чём вообще было?
    О том, что автор не способен был в конце концов сам понять, что делает неправильно?
     
  21. Eugeny1987

    Eugeny1987

    Регистрация:
    28 дек 2011
    Сообщения:
    495
    Было бы это просто, уже бы написал.
    Сдается мне, что я сделал неправильно когда не зная ассемблера полез в отладчик
     
  22. daemolisher

    daemolisher

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