Dandelion 1.1.1
A light-weight 3D builder for educational usage
|
一个最简化的 Frame Buffer 。 更多...
#include <graphics_interface.h>
Public 成员函数 | |
FrameBuffer (int width, int height) | |
void | set_pixel (int index, float depth, const Eigen::Vector3f &color) |
设置当前像素点的颜色 | |
void | clear (BufferType buff) |
初始化指定类型的 buffer。 | |
Public 属性 | |
int | width |
int | height |
std::vector< Eigen::Vector3f > | color_buffer |
std::vector< float > | depth_buffer |
Private 属性 | |
std::vector< SpinLock > | spin_locks |
一个最简化的 Frame Buffer 。
要渲染一帧,通常至少需要一个 color buffer 用于输出颜色、一个 depth buffer 用于记录深度。
FrameBuffer::FrameBuffer | ( | int | width, |
int | height ) |
初始化一个 frame buffer 。
void FrameBuffer::clear | ( | BufferType | buff | ) |
初始化指定类型的 buffer。
color buffer 最后会传递给 rendering_res,所以可以直接初始化为背景颜色 depth buffer 则可以初始化为最大值
buff | 根据传入的 buffer 类型,初始化相应类型的 buffer |
void FrameBuffer::set_pixel | ( | int | index, |
float | depth, | ||
const Eigen::Vector3f & | color ) |
设置当前像素点的颜色
根据计算出的 index,对 frame buffer 中的 color buffer 和 depth buffer 进行填充
index | 填充位置对应的一维索引 |
depth | 当前着色点计算出的深度 |
color | 当前着色点计算出的颜色值 |
std::vector<Eigen::Vector3f> FrameBuffer::color_buffer |
color buffer 的存储元素为 Eigen::Vector3f,范围在 [0,255],三个分量分别表示 (R,G,B)
std::vector<float> FrameBuffer::depth_buffer |
depth buffer 也可以叫做 z-buffer,用于判断像素点相较于观察点的前后关系
|
private |
用于在深度测试和着色时对相应位置的像素加锁
int FrameBuffer::width |
Frame buffer 对应图像的宽度和高度