35 lines
710 B
C++
35 lines
710 B
C++
#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<Pixel> 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<Triangle> TriangleArray;
|