paysages3d/src/render/software/CanvasPixel.h

44 lines
925 B
C
Raw Normal View History

#pragma once
#include "software_global.h"
2014-06-10 13:13:16 +00:00
#include "CanvasFragment.h"
2015-10-18 15:26:19 +00:00
const int MAX_FRAGMENTS_PER_PIXEL = 5;
2014-06-10 13:13:16 +00:00
namespace paysages {
namespace software {
/**
2016-01-03 18:21:23 +00:00
* One pixel of a Canvas.
*
* A pixel stores superimposed fragments (CanvasFragment), sorted by their distance to camera.
*/
class SOFTWARESHARED_EXPORT CanvasPixel {
public:
CanvasPixel();
2014-06-10 13:13:16 +00:00
inline int getFragmentCount() const {
return count;
}
inline const Color &getComposite() const {
return composite;
}
inline const CanvasFragment &getFragment(int position) const {
return fragments[position];
}
2014-06-10 13:13:16 +00:00
const CanvasFragment *getFrontFragment() const;
void reset();
void pushFragment(const CanvasFragment &fragment);
2014-06-12 15:45:59 +00:00
void updateComposite();
2014-08-18 10:17:16 +00:00
void setComposite(const Color &color);
2014-06-10 13:13:16 +00:00
private:
2014-06-10 13:13:16 +00:00
int count;
CanvasFragment fragments[MAX_FRAGMENTS_PER_PIXEL];
2014-06-12 15:45:59 +00:00
Color composite;
};
}
}