Код от лекция 3 и преди лекция 4
- Forums:
Здравейте,
проектът се сдоби с две repository-та в github:
http://github.com/anrieff/sdl-minimal
http://github.com/anrieff/trinity
Това са GIT хранилища, чиито съдържания можете да изтеглите чрез TortoiseGIT, msysgit под windows или еквивалентните им под Linux (разбира се, можете да ползвате commandline клиента). За инструкции как да свалите и компилирате проекта си, вижте тук.
Първият линк съдържа кода от лекция 3 - тестовата програмка за SDL.
Вторият линк ще бъде основното ни хранилище за код в проекта-рейтрейсър, който ще сковем по време на курса. Алтернативен линк, за по-лесно запомняне, е:
http://code.raytracing-bg.net/
който ще ви заведе на същото място.
Понастоящем, на този адрес съм качил доста нов код, който ще бъде основата, върху която ще градим рейтрейсъра от лекция 4 нататък. Към момента там има:
- Код, който се занимава с SDL (отваряне на прозорец, превръщане на цветовите формати от HDR към RGB32, чертаене на екрана, и изчакване на събития от потребителя (за затваряне на прозореца); кодът има добавки спрямо лекция 3 - основно error handling и преносимост);
- Класовете Color, Vector, Ray и Matrix, които ще използваме наготово;
- Приложни функции (за генериране на случайни float числа, за превръщане на градуси в радиани и обратно, и други);
- main() код, който инициализира SDL, създава прозорец 640х480, запълва го със градиент (същият като от лекция 3), и го показва на екрана.
- Проектни файлове за Code::Blocks. Изберете подходящия файл за вашата OS (например, trinity-win32.cbp под Windows) и си направете копие - trinity.cbp. Оттук нататък ще работите само с този файл - той не попада в контрола на git и няма да имате предупреждения, че е бил променен и т.н. Отворете въпросния файл с Code::Blocks.
- Допълнителни инструкции за подкарването на проекта се намират в README.md
Препоръчвам на всички студенти да прегледат днес качените до момента неща - особено кода на класовете Vector, Matrix и Color - така ще ви е много по-лесно да се ориентирате на самата лекция (там също ще ги представя, но няма да се впускам в детайли и ако някой има въпроси по тях (все пак това е основата, по която работим), е добре да пита, преди да продължим нататък).