#pragma once #include "math/dvc_vector3.h" #include "rasterizer/dvc_rasterizer_triangle.h" struct Triangle { public: int32_t m_id; davinci::fVector3 m_p0, m_p1, m_p2; davinci::fVector3 m_pixelColor; struct Pixel { int32_t x, y; uint32_t mask; // 0xFFFFFFFF for full pixel, 0x00000000 for empty pixel }; typedef std::vector PixelArray; PixelArray m_pixels; public: static int32_t nextID(); static davinci::fVector3 randomColor(); Triangle(int32_t id, const davinci::fVector3& pixelColor) : m_id(id) , m_pixelColor(pixelColor) { } public: void build(int32_t canvasWidth, int32_t canvasHeight, davinci::AntiAliasingTech aaTech); }; typedef std::vector TriangleArray;