Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Я не понимаю что происходит: камера на углах Эйлера (3 стр)

Я не понимаю что происходит: камера на углах Эйлера (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
DelfigamerПостоялецwww11 июня 201815:21#30
Great V.
> Т.е. я могу обойтись без декларации типа переменной
Ты думаешь, что можешь обойтись, потому что в силу нехватки опыта ещё не встречался с возникающими при этом проблемами.
А именно - когда этот код начнёт читать другой человек (например, Грейт Ви пять лет спустя), то будут постоянно возникать вопросы рода «dx и dy это int, float или double»? В этом примере оно, может, и не настолько критично; а вот в других местах вполне может привести и к полному непонимаю, и даже к неправильному понимаю, с последующим совершением ошибок и наступанием в UB.

Zab
> Какая же это "подборка UB"? Это глупейшие детские ошибки.
Оно так выглядит, потому что ради иллюстративности я убрал из программы всё ненужное, выделил ошибку жирным шрифтом и подписал большими буквами «ПРОГРАММА ЛОМАЕТСЯ ВОТ ЗДЕСЬ».
Если хочешь более практического примера - вот. Не подглядывая в историю коммитов - сможешь сходу определить, где ошибка? Из аномального поведения - только ругательства отладчика студии о запоротой куче на выходе из main. Покажи мне на мою детскую ошибку.

Правка: 11 июня 2018 15:25

ZabПостоялецwww11 июня 201815:28#31
Delfigamer
Если ты лазаешь за границы массивов и по несуществующим ссылкам, кто-то в этом виноват, кроме тебя?

Я бы на твоем месте подобные ляпы никому не показывал. Стыдно. Случись такое несколько раз на работе - уволят же за полную профнепригодность. Один-два случая еще можно списать на опечатки, но и их быть не должно.

Great V.Постоялецwww11 июня 201816:53#32
Delfigamer
> Ты думаешь, что можешь обойтись, потому что в силу нехватки опыта ещё не
> встречался с возникающими при этом проблемами.
Не поверишь - встречался и не раз.
Но все они были не из-за auto, а из-за изнасилованных идентификаторов или кривой архитектуры. А это уже отдельные проблемы, которые к сабжу не имеет никакого отношения.

> dx и dy это int, float или double
Ну если именно такой вопрос у меня возникнет - то я либо воспользуюсь IDE, либо вручную отслежу цепочку связей этой переменной.

А Инуенда скорее всего не принимает auto не потому что он (auto) плох (ведь он хорош).
А либо потому что Инуенда старый ворчун не могущий в современность, либо в детстве auto делал с ним жуткие вещи и теперь у него психологическая травма.

MrShoorУчастникwww11 июня 201817:16#33
entryway
> http://rextester.com/FWKV36110
А переполнение инта в плюсах это тоже чтоль ub? А переполнение int32_t тоже?
IBetsПользовательwww11 июня 201819:05#34
Обращение всем
Хватит вам уже про auto. Я пришел с Python. Там в голове тип выводить надо. Лучше конкретно про dinput 

Правка: 11 июня 2018 19:05

innuendoПостоялецwww11 июня 201819:47#35
IBets
> Там в голове тип выводить надо

там динамик тайпинг же

innuendoПостоялецwww11 июня 201819:48#36
Great V.
> либо в детстве auto делал с ним жуткие вещи

да, auto в старом С был, это ещё от 70 годов - тебя тогда ещё и в проекте не было

ArochПостоялецwww11 июня 201819:56#37
IBets
> Хватит вам уже про auto. Я пришел с Python. Там в голове тип выводить надо.
> Лучше конкретно про dinput 
а с чего ты взял что проблема в dinput?
IBetsПользовательwww11 июня 201820:11#38
Aroch
В общем проблема действительно в нем. В код я сделал вот такое изменение и все заробило
    ILINE auto Input::UpdateStateKeyboard() {      

      if (FAILED(m_pDeviceKeyboard->Poll()))       
        while (m_pDeviceKeyboard->Acquire() == DIERR_INPUTLOST);                
      DX::ThrowIfFailed(m_pDeviceKeyboard->GetDeviceState(sizeof(KeysState), &m_BufKeys));
    }

    ILINE auto Input::UpdateStateMouse() {
      if (FAILED(m_pDeviceMouse->Poll()))       
        while (m_pDeviceMouse->Acquire() == DIERR_INPUTLOST);            
      DX::ThrowIfFailed(m_pDeviceMouse->GetDeviceState(sizeof(MouseState), &m_BufMouse));
    }

Правка: 11 июня 2018 20:14

DelfigamerПостоялецwww11 июня 201820:12#39
Zab
> Если ты лазаешь за границы массивов и по несуществующим ссылкам, кто-то в этом
> виноват, кроме тебя?
> Я бы на твоем месте подобные ляпы никому не показывал. Стыдно. Случись такое
> несколько раз на работе - уволят же за полную профнепригодность. Один-два
> случая еще можно списать на опечатки, но и их быть не должно.
Так в каком месте ляп? Если это так стыдно, то тебе не составит труда найти проблемное место.

MrShoor
> А переполнение инта в плюсах это тоже чтоль ub? А переполнение int32_t тоже?
Судя по всему - да и тоже да. По правилам, переполнять можно только беззнаковые целые.

Great V.
> Ну если именно такой вопрос у меня возникнет - то я либо воспользуюсь IDE, либо
> вручную отслежу цепочку связей этой переменной.
Сложно, это ж надо либо запускать целый IDE (я, например, программирую в блокноте), либо открывать ещё кучу файлов, либо, в худшем случае, искать имена по файлам. Кроме того, если код читается с веб-страницы - например, на гитхабе - то оба вариантся становятся жутко геморройными.
Тип переменной - это такая же документация, как и её название и служит точно тем же целям - сообщает о её использовании. Сравни, например,

Vector3 hit = raycast(origin, direction);
Actor* hit = raycast(origin, direction);
RaycastResult hit = raycast(origin, direction);
IBetsПользовательwww11 июня 201820:18#40
innuendo
Так и что в голове тип держать надо. А здесь в IDE подсвечивается. Пишу как на C#
Great V.Постоялецwww11 июня 201821:52#41
Delfigamer
> я, например, программирую в блокноте
На этом и закончим : )
IBetsПользовательwww11 июня 201821:58#42
Great V.
Плюсую. В блокноте только на Python писать можно
DelfigamerПостоялецwww11 июня 201823:06#43
Great V.
> На этом и закончим : )
Закончились аргументы?
К тому же, ты закончил не до конца:
Delfigamer
> Кроме того, если код читается с веб-страницы - например, на гитхабе - то оба
> вариантся становятся жутко геморройными.
Тоже пусть катятся лесом? Пускай на каждый сниппет ставят себе студию, скачивают весь гит и генерируют файлы проекта?

IBets
> Плюсую. В блокноте только на Python писать можно
Вот только почему-то твоя IDE от UB всё равно не спасла.

Выходит, на пайтоне можно писать и в среде, и в блокноте; а на крестах - и тут нельзя, и там не получается, лол.

Правка: 11 июня 2018 23:06

IBetsПользовательwww11 июня 201823:45#44
Delfigamer
Ну статическим анализатором надо прогнать. Я думаю у меня ошибка в шаблонах где-то, но компилятор все равно создал код. Такое бывает. Но все равно все очень странно потому что я без перекомпиляции запускаю .exe. И он всегда ведет себя по разному. То FPS низкий, то черный экран, то Error SwapChain->Present, то стабильная работа

Правка: 11 июня 2018 23:50

Страницы: 1 2 3 4 5 6 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр