|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
||||||
Проблемы с рекурсией07.10.2011, 11:29. Показов 2840. Ответов 32
Метки нет (Все метки)
Здравствуйте. Пытаюсь сделать нечто на подобии 3д движка на visual studio 2008 en (c++ & directx9). Но вот при делении сетки террейна получаю странный вылет который мне не удается побороть уже около месяца. Сначала делал на vs 2008 rus, но потом подумав решил скачать en, но результат такой же - вылетает когда движок начинает рекурсивно делить сетку на более мелкие части.
Значит выяснил причину вылета, поставил новую студию (2008 en) и начал в ней тот проект делать - все также, не работает, решил немного отвлечься и принялся за редактор сеток (в будущем редактор уровней) и тут у меня все идет хорошо, и на 7 и на хр все идет отлично, значит подумал и пересобрал проект движка, не вышло, пересобрал еще раз, при подключении террейна опять тоже самое, когда удалил террейн все осталось косячным как и было (как будто проклятый файл какой-то), зановов пересобрал и начал делать новый класс террейна. Цельный меш ессесно не приносит никаких вылетов, все хорошо, подключил те бибилиотеки где функции деелния сетки на отдельные мелкие сетки, самое первое деление не приносит никаких вылетов. Но когда за этим первым еделнием идет вызов функции которая рекурсивно запускает функцию деления сетки тут я и получил опять тот же вылет ... долго пытаясь понять где происходит вылет пришел к некоторым результатам.
Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: SkyXEngine.exe Версия приложения: 0.0.0.0 Отметка времени приложения: 4e8e97c6 Имя модуля с ошибкой: ntdll.dll Версия модуля с ошибкой: 6.1.7600.20548 Отметка времени модуля с ошибкой: 4ad6bca9 Код исключения: c0000005 Смещение исключения: 00056bbd Версия ОС: 6.1.7600.2.0.0.256.1 Код языка: 1049 Дополнительные сведения 1: 0a9e Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789 Дополнительные сведения 3: 0a9e Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789 P.S до того как сделать деление бинарник заупскался и на хр и на 7 где нет студии, всв норме, но с делением работать не хочет ни у меня (работает только при заупске из студии) ни на других компах. В режиме совместимости на 7 работает как надо, но это не выход ибо на хр все-равно не работает.
0
|
||||||
| 07.10.2011, 11:29 | |
|
Ответы с готовыми решениями:
32
Не получается решить задание на рекурсией!
Задача с рекурсией |
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
|
| 08.10.2011, 08:29 [ТС] | |
|
Deviaphan, да получилось, щас работаю над оптимизацией ... а то террейн с 525 000 полгонами рендерится не очень ... ~750 кадров ...
Добавлено через 6 минут Еще раз спасибо.
0
|
|
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
|||||||
| 12.10.2011, 16:36 [ТС] | |||||||
|
Возникла еще одна проблема, которая связана с этим кодом, правильность кода только для случая:
Добавлено через 46 секунд P.S вот код:
0
|
|||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 12.10.2011, 16:48 | |
|
Тебе нужно "отфильтровать" вершины с одинаковыми координатами и индексы на них передавать.
Т.е., например, для двух смежных треугольников будет 4 вершины и 6 индексов.
0
|
|
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
|
| 12.10.2011, 16:53 [ТС] | |
|
Deviaphan, прошу прощенья за мою наглость, но не могли бы чуток по подробнее, не могу сообразить каким образом сделать то что Вы сказали.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 12.10.2011, 18:33 | |
|
Есть вершины A B C D E F. И два треугольника ABC и DEF.
Вершины B == E и C == D. Поэтому в массив вершин ты записываешь ABCF и в массив индексов пишешь соответствующие индексы, т.е. 0, 1, 2, 2, 1, 3. Т.е. одни и те же вершины используются для построения разных треугольников при помощи массива индексов. Т.е. размер массива вершин меньше массива индексов.
1
|
|
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
|
| 12.10.2011, 18:36 [ТС] | |
|
Deviaphan, кое-что проясняется, а нельзя ли сделать чтоб каждый элемент буфера индексов использовал соответствующую вершину из буфера вершин, то есть привести в итоге сетку к такому виду чтоб та функция заполнения буфера индесов работала?
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 12.10.2011, 18:39 | |
|
Программист С++ может фсё!
0
|
|
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
|
| 12.10.2011, 18:41 [ТС] | |
|
Deviaphan, хех ... ну опытный то может но я новичок в этом деле ... поэтому и спрашиваю.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 12.10.2011, 18:49 | |
|
Код построения тривиален. Я даже подсказывать не буду, чтобы тебе самому интереснее было.)
Вот такой я нехороший. ![]() Добавлено через 4 минуты Тебе нужно удалить повторяющиеся вершины и переиндексировать треугольники. Кода на одну-две страницы, поэтому очень влом его писать. Он простой, но очень нудный. Добавлено через 2 минуты Недавно писал аналогичный код для экспорта в VRML. Только я переиндексировал объёмную модель в поверхностную. Код простой. Старайся.)
0
|
|
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
|
| 12.10.2011, 18:49 [ТС] | |
|
Deviaphan, то есть к примеру создаю динамический массив и записываю туда все значения из буфера вершин, потом каждую эту вершину проверяю со всеми вершинами этого буфера и повторяющиеся удаляю?
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 12.10.2011, 18:52 | |
|
Да. Проще делать через map<vertex, index>. Постепенно добавляя вершины и заполняя массив индексов.
Добавлено через 51 секунду На самом деле, задача хоть и простая, но очень интересная. Её даже можно для самопроверки программистам использовать. В лоб решения или не получится или кривое будет.)
0
|
|
|
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
|
||||||
| 12.10.2011, 20:34 [ТС] | ||||||
|
Deviaphan, ага, значит как получаю готовый массив "неповторяющихся вершин" (или уникальных) то создаю пустую сетку, затем заполняю из этого массива буфер вершин, затем по той функции заполнения индексов заполняю буффер индексов?
Добавлено через 11 минут Что-то не выходит одинаковых вершин ... вот код:
Что может быть не так? Добавлено через 1 час 28 минут Deviaphan, код и тем более алгоритм оказались действительно тривиальными, слава Богу получилось сделать, Вы опять мне помогли, СПАСИБО Вам ОГРОМНОЕ! P.S ток у мя код вышел всего в 46 строк чистого кода ...
0
|
||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|||
| 13.10.2011, 06:01 | |||
|
У меня на два экрана получилось, потому что я параллельно формирую кучу данных, плюс комментарии... В общем от балды цифру назвал.) Главное, что у тебя всё получилось, причём самостоятельно. Я в тебя верил.)
0
|
|||
| 13.10.2011, 06:01 | |
|
Сортировка рекурсией Задача с рекурсией! Функция с рекурсией Вычислить рекурсией Помогите с Рекурсией ! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|