Войти
ПрограммированиеФорумГрафика

Загрузка .obj в DirectX9 (2 стр)

Страницы: 1 2
#15
13:36, 24 янв 2018

Да, индексы в .obj с 1цы. Я это обнаружил еще в начале, дело не в этом.
Код позже.

#16
21:22, 24 янв 2018

Господа. смотрел-смотрел..Сокращать долго, если никто не будет загружать проект - посижу, сокращу. Выкладываю целый проект, под 17 студию. Модель внутри, в папке models(присутствует лишняя текстура одна, не грамотно экспортировал)
http://rgho.st/7kZ9YLxzD

#17
21:31, 24 янв 2018

диван огроменный и с кривыми нормалями, может он тебе тупо в диапазон near/far не влез?

#18
22:49, 24 янв 2018

Range
Ну и код у тебя... жжжесть. Без допиливаний напильником никак.
1. Не компилируется с последним win sdk, пришлось ставить ту версию что у тебя
2. Не компилируется в 64 бита. А если уговорить его скомпилироваться, то он все равно не работает, потому что ты гоняешь поинтеры через LONG.
3. В 32 битах крешится при переборе каталогов (не разбирался, просто задал вручную путь)
4. Не рисует ничего, если рабочая директория не та (хз почему)
5. Весь аутпут просто завален ворнингами. Портянка ворнигнов на пару экранов. Как ты работаешь вообще с этим? о_О
6. Когда я таки завел этот код, и оно начало рисовать, я оказался внутри дивана. Вот нафига? Сложно было чтоль камеру отодвинуть перед тем как выкладывать сюда? Когда я наконец таки отодвинул камеру - я увидел проблему.
Не делай короче больше так.

Короче. У тебя кривая матрица перспективной проекции. Из-за этого буфер глубины получается вывернутым. А кривая она потому что ты делаешь:
D3DXMatrixPerspectiveFovRH(&persp, gradus_to_radian(90), (rect.right - rect.left) / (rect.bottom - rect.top), 2000.f, 1.f);
а надо:
D3DXMatrixPerspectiveFovRH(&persp, gradus_to_radian(90), (rect.right - rect.left) / (rect.bottom - rect.top), 1.f, 2000.f);

p.s. Реально на поиск проблемы у меня ушла где-то минута, а на то, чтобы заставить твой код собраться я убил минимум пол часа, а то и весь час.

#19
23:33, 24 янв 2018

MrShoor
1. Студия не обновлена, руки не дошли.
2. Не проверял, ибо пока не требовалось. Можно подробнее про исправление(чтобы не загромождать тему, можно в ЛС)
3. Все прекрасно работает, серьёзно, только что проверил.
5. Ошибки..странно, но особо у себя ничего критичного не видел. И да, скорее всего это исключение ловится в парсере(не переделал пока на более элегантный вариант).
6. Забыл, прошу прощения.

Да-да, код подлежит рихтовке, это без вопросов.  Ещё там завалы, ибо когда столкнулся с этой проблемой. столько попыток было найти и устранить этот баг...
Проблема действительно решена, я почитаю подробнее про перспективную матрицу. Вы очень помогли - спасибо!

#20
23:49, 24 янв 2018

MrShoor
пара минут в учебнике - и всё встало на свои места. Спасибо огромное! Ушёл чистить код и обновлять студию.

#21
0:12, 25 янв 2018

Range
> 2. Не проверял, ибо пока не требовалось. Можно подробнее про исправление(чтобы
> не загромождать тему, можно в ЛС)
Я не стал исправлять. Просто собрал в 32 битах. Падало на GetWindowLong потому что для передачи указателя надо использовать GetWindowLongPtr. Возможно там еще проблемы есть.

> 3. Все прекрасно работает, серьёзно, только что проверил.
Ну это у тебя. Мне лень было разбираться что же там не так.

> 5. Ошибки..странно, но особо у себя ничего критичного не видел.
Держи скрин:

+ Показать
#22
2:03, 25 янв 2018

MrShoor
Про указатели почищено. Да, варнинги есть, уже в чистку. Еще раз спасибо.

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.