Advanced: Тема повышенной сложности или важная.
Neptune
а баг какого рода?
вообще такое поведение обычно бывает когда что то с памятью не так делаешь.
Если есть примерное представление где это происходит то там уже можно что то делать.
Например если это может быть неправильная работа с локальными переменными функции (там выход за пределы массива или засирание чужой памяти переменной в стеке) то можно например в этой функции после каждой объявленной переменно объявить по массиву ну и посмотреть помогло/нет. (смысл сего безобразия: если там одна локальная переменная портит стек, то объявление массива после неё создаст ей некий буфер, куда можно гадить) :) (при запуске из под студии память распределяется по другому, чем из чистого запуска, и поэтому проблема может не проявляться)
Ну ну может быть проблема с переменными окружения. которые при запуске из под студии и не из под неё разные, если у тебя на них что нибудь завязано.
Ну а вообще тут конечно надо смотреть конкретный случай какого то общего совета на такой вопрос вряд ли можно дать... :)
Лог не помогает, потому что GL работает асинхрнно, а падает что-то в нём. Короче баг такой: если полетать над планетой до заполнения кэша текстур и геометрии (640 из 1024 Мб оперативы видеокарты), дальнейший полёт по-идее должен приводить к удалению старых блоков ландшафта для освобождения памяти. Но при этом вновь сгенеренные блоки как-то странно себя ведут - текстуры генерятся нормально, а в vbo попадают какие-то рандомные значения, в итоге планета "взрывается", а через некоторое время прога крашится. Утечек памяти и переполнения массивов нет, правда проверить это можно только в дебаге или в дебаг компиляции, а там этот баг не возникает.
сложнно :)
ну, если что, можно попробовать поотключать некоторые связанные вещи в коде и посмотреть исчезла проблема или нет. Ну, например там не отрисовысвать планету и полетать над ней, или что нибудь не генерить. И проверить по косвенным признакам (теми же дебаг принтам) будет ли проблема или пропадет.
Ну, и таким образом можно будет попробовать её локализовать.
Neptune
> потому что GL работает асинхрнно
поставь в нужные места glFlush :)
> а в vbo попадают какие-то рандомные значения,
какие-то непонятки, ты опиши что, конкретно, делаешь и что, конкретно, не работает
чисто конкретно так сказать :)
Neptune
Можно еще выводить на экран ключевые переменные, ну которые могут отвечать за нужный фрагмент (указатели, счётчики, адреса памяти и т.д.)
А во время просмотра пользуйся прогой для видео захвата. (если есть шанс неуспеть за фиксацией показаний).
З.Ы. Всё таки идея с лог файлом хороашая мысль...
Neptune
не инициализируешь переменную где-то либо баг с синхронизацией потоков
у меня 1000 чный пост
Попробую просто откатиться до одной из предыдущих версий, когда этого бага еще не было, и посмотреть, чего я такого сделал нового. Вот блин, хотел к новому году выложить демку, теперь похоже не успею:)
serpin
Движок однопоточный, загрузка текстур происходит между кадрами. Мультитрединг есть, но страшно глючит, пока некогда разбираться...
Neptune
> Вот блин, хотел к новому году выложить демку, теперь похоже не успею:)
Delta_Q - post № 998
Какая-то фигня... Удаляются некоторые индексные буфферы (glIsBuffer выдает false), поэтому планету раскорячивает. Но индексные буфферы создаются один раз при загрузке, а удалются при выходе из проги, во время работы используются только для рендера...
На ATI вообще почти сразу выдаёт GL_OUT_OF_MEMORY, хотя занято всего 300 меторв из 1024.
ЗЫ: С наступающим! :)
и тебя с наступающим :)
С наступившим! :)
ЗЫ: баг исправил)))
Люди водку пьянствуют, а он баги исправляет. С новым годом Нептун !
Баг был исправлен ещё в прошлом году:))
что хоть за баг то был? :)