Dandelion 1.1.1
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
FrameBuffer类 参考

一个最简化的 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< SpinLockspin_locks
 

详细描述

一个最简化的 Frame Buffer 。

要渲染一帧,通常至少需要一个 color buffer 用于输出颜色、一个 depth buffer 用于记录深度。

构造及析构函数说明

◆ FrameBuffer()

FrameBuffer::FrameBuffer ( int width,
int height )

初始化一个 frame buffer 。

成员函数说明

◆ clear()

void FrameBuffer::clear ( BufferType buff)

初始化指定类型的 buffer。

color buffer 最后会传递给 rendering_res,所以可以直接初始化为背景颜色 depth buffer 则可以初始化为最大值

参数
buff根据传入的 buffer 类型,初始化相应类型的 buffer

◆ set_pixel()

void FrameBuffer::set_pixel ( int index,
float depth,
const Eigen::Vector3f & color )

设置当前像素点的颜色

根据计算出的 index,对 frame buffer 中的 color buffer 和 depth buffer 进行填充

参数
index填充位置对应的一维索引
depth当前着色点计算出的深度
color当前着色点计算出的颜色值

类成员变量说明

◆ color_buffer

std::vector<Eigen::Vector3f> FrameBuffer::color_buffer

color buffer 的存储元素为 Eigen::Vector3f,范围在 [0,255],三个分量分别表示 (R,G,B)

◆ depth_buffer

std::vector<float> FrameBuffer::depth_buffer

depth buffer 也可以叫做 z-buffer,用于判断像素点相较于观察点的前后关系

◆ spin_locks

std::vector<SpinLock> FrameBuffer::spin_locks
private

用于在深度测试和着色时对相应位置的像素加锁

◆ width

int FrameBuffer::width

Frame buffer 对应图像的宽度和高度


该类的文档由以下文件生成: