// Copyright 2024 Bytedance Inc. All Rights Reserved. // Author: tianlei.richard@bytedance.com (tianlei.richard) #include #include #include "spdlog/spdlog.h" #include "common.h" #include "minus_renderer.h" #include "triangle.h" int main(int argc, char *argv[]) { spdlog::set_level(spdlog::level::trace); const int resolution_width = 320; const int resolution_height = 180; const int far = -1000; const int near = -10; const float fov = 120. / 180. * M_PI; const float aspect_ratio = static_cast(resolution_width) / static_cast(resolution_height); std::vector primitives{ {Point3d{10, 5, -20}, Point3d{30, 25, -20}, Point3d{55, 5, -20}}}; cv::namedWindow("MinusRenderer", cv::WINDOW_AUTOSIZE); const auto start = std::chrono::steady_clock::now(); MinusRenderer renderer{near, far, fov, aspect_ratio, std::move(primitives)}; do { const auto elapse = std::chrono::duration_cast( std::chrono::steady_clock::now() - start) .count(); TransformMatrix m{ Eigen::Transform( Eigen::AngleAxisd(0.125 * M_PI, Eigen::Vector3d::UnitZ()) .toRotationMatrix()) .matrix()}; renderer.model_transform(m); const auto &color_image = renderer.render(resolution_width, resolution_height); cv::imshow("MinusRenderer", color_image); } while (cv::waitKey(25) == -1); cv::destroyWindow("MinusRenderer"); return 0; }