я работаю над встроенной системой, и в свободное время я хотел бы проверить ее возможности рисования.
Речь идет о микроконтроллере ARM Cortex M3, подключенном к плате EasyMX Stellaris. И у меня есть небольшой экран TFT 320x240 :)
Теперь у меня есть немного свободного времени каждый день, и я хочу создать вращающийся куб. Micro C PRO для ARM не имеет возможности 3D-рисования, что означает, что это должно быть сделано в программном обеспечении.
Из книги «Введение в программирование трехмерных игр с помощью DirectX 10» я знаю матричную алгебру преобразований, но это здорово, когда у вас есть DirectX для правильной настройки камеры.
Я думаю, я мог бы сделать 2-й объект, чтобы вращаться, но как бы я пошел с 3D-объект?
Любые идеи и примеры приветствуются. Хотя я бы предпочел советы. Я хотел бы понять это.
источник
Ответы:
Вы понимаете, что камера DirectX - это всего лишь пара матричных преобразований? У вас есть ModelView, Projection, затем преобразование матрицы Viewport в каждую вершину в таком порядке, чтобы изменить 3d-координаты на 2d-координаты.
Подробнее о преобразовании по стандартному конвейеру (я думаю, что DirectX и OpenGL работают одинаково).
Затем вы растеризуете треугольники, основываясь на двухмерных местоположениях (которые возникли в результате ваших преобразований) имеющегося теперь двухмерного массива вершин. Это может быстро усложниться, но использование теста PIT и полное окрашивание любого пикселя, который сталкивается, должно быть достаточно простым и эффективным в вашем случае.
Другой способ сделать это и более простой способ - создать трассировщик лучей. Просто распакуйте луч, используя матрицу преобразования, которую вы хотите применить к вашему объекту.
Давненько я не играл с низкоуровневыми вещами, так что я могу ошибаться, но любой маршрут не должен быть слишком сложным. Поймите, как работает аппаратный конвейер, и внедрите его в программное обеспечение или напишите трассировщик лучей.
Кстати, именно здесь я узнал, что я знаю о графическом конвейере.
источник
В те дни, когда 3D-оборудование было недоступно, нам приходилось создавать собственные 3D-движки и растеризаторы полигонов. 3DICA - это отличный учебник, объясняющий все основы программного 3D-движка. Для меня изображения не будут отображаться в Firefox, но в Internet Explorer они работают нормально.
Главы 2.1 и 3.1 должны быть достаточными для удовлетворения ваших потребностей, но чтение всего урока должно многому вас научить.
источник