CARLA
 
载入中...
搜索中...
未找到
Public 类型 | 静态 Public 成员函数 | 所有成员列表
FPixelReader类 参考

用于从 UTextureRenderTarget2D 读取像素的实用工具。 更多...

#include <PixelReader.h>

Public 类型

using Payload = std::function<void(void *, uint32, uint32, uint32)>
 

静态 Public 成员函数

static TUniquePtr< TImagePixelData< FColor > > DumpPixels (UTextureRenderTarget2D &RenderTarget)
 转储 RenderTarget 中的像素。
 
static TFuture< bool > SavePixelsToDisk (TUniquePtr< TImagePixelData< FColor > > PixelData, const FString &FilePath)
 异步保存 PixelData 中的像素到磁盘。
 
static TFuture< bool > SavePixelsToDisk (UTextureRenderTarget2D &RenderTarget, const FString &FilePath)
 异步保存 RenderTarget 中的像素到磁盘。
 
template<typename TSensor , typename TPixel >
static void SendPixelsInRenderThread (TSensor &Sensor, bool use16BitFormat=false, std::function< TArray< TPixel >(void *, uint32)> Conversor={})
 方便函数,将渲染命令加入队列以通过 Sensor 的数据流发送像素。 它需要一个继承自 ASceneCaptureSensor 或兼容的传感器。
 
static bool WritePixelsToArray (UTextureRenderTarget2D &RenderTarget, TArray< FColor > &BitMap)
 RenderTarget 中的像素复制到 BitMap 中。
 
static void WritePixelsToBuffer (const UTextureRenderTarget2D &RenderTarget, uint32 Offset, FRHICommandListImmediate &InRHICmdList, FPixelReader::Payload FuncForSending)
 RenderTarget 中的像素复制到 Buffer。
 

详细描述

用于从 UTextureRenderTarget2D 读取像素的实用工具。

待办事项
当前该类仅支持 PF_R8G8B8A8 格式。

在文件 PixelReader.h34 行定义.

成员类型定义说明

◆ Payload

using FPixelReader::Payload = std::function<void(void *, uint32, uint32, uint32)>

在文件 PixelReader.h38 行定义.

成员函数说明

◆ DumpPixels()

TUniquePtr< TImagePixelData< FColor > > FPixelReader::DumpPixels ( UTextureRenderTarget2D & RenderTarget)
static

转储 RenderTarget 中的像素。

从渲染目标提取像素数据,并将其封装为唯一指针。

前置条件
必须从游戏线程调用。
参数
RenderTarget要读取的纹理渲染目标。
返回
包含像素数据的唯一指针。

在文件 PixelReader.cpp127 行定义.

引用了 WritePixelsToArray().

被这些函数引用 SavePixelsToDisk().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SavePixelsToDisk() [1/2]

TFuture< bool > FPixelReader::SavePixelsToDisk ( TUniquePtr< TImagePixelData< FColor > > PixelData,
const FString & FilePath )
static

异步保存 PixelData 中的像素到磁盘。

异步保存像素数据到磁盘。

前置条件
必须从游戏线程调用。
参数
PixelData要保存的像素数据。
FilePath保存图像的文件路径。
返回
一个指示操作成功的未来值。

在文件 PixelReader.cpp162 行定义.

◆ SavePixelsToDisk() [2/2]

TFuture< bool > FPixelReader::SavePixelsToDisk ( UTextureRenderTarget2D & RenderTarget,
const FString & FilePath )
static

异步保存 RenderTarget 中的像素到磁盘。

将渲染目标中的像素数据异步保存到磁盘。

前置条件
必须从游戏线程调用。
参数
RenderTarget要读取的纹理渲染目标。
FilePath保存图像的文件路径。
返回
一个指示操作成功的未来值。

在文件 PixelReader.cpp148 行定义.

引用了 DumpPixels() , 以及 SavePixelsToDisk().

被这些函数引用 URoadMap::SaveAsPNG(), ASceneCaptureSensor::SaveCaptureToDisk() , 以及 SavePixelsToDisk().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SendPixelsInRenderThread()

template<typename TSensor , typename TPixel >
void FPixelReader::SendPixelsInRenderThread ( TSensor & Sensor,
bool use16BitFormat = false,
std::function< TArray< TPixel >(void *, uint32)> Conversor = {} )
static

方便函数,将渲染命令加入队列以通过 Sensor 的数据流发送像素。 它需要一个继承自 ASceneCaptureSensor 或兼容的传感器。

注意:序列化器需要定义一个 "header_offset",分配在缓冲区前部。

前置条件
必须从游戏线程调用。

阻塞,直到渲染线程完成所有任务。

待办事项
确保传感器不会被销毁?

在文件 PixelReader.h92 行定义.

引用了 carla::BufferView::CreateFrom(), carla::streaming::detail::token_type::get_stream_id(), FCarlaEngine::GetFrameCounter(), carla::ros2::ROS2::GetInstance(), SendPixelsInRenderThread(), carla::sensor::CompositeSerializer< Items >::Serialize() , 以及 WritePixelsToBuffer().

被这些函数引用 SendPixelsInRenderThread().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ WritePixelsToArray()

bool FPixelReader::WritePixelsToArray ( UTextureRenderTarget2D & RenderTarget,
TArray< FColor > & BitMap )
static

RenderTarget 中的像素复制到 BitMap 中。

将像素数据从渲染目标写入数组。

前置条件
必须从游戏线程调用。
参数
RenderTarget要读取的纹理渲染目标。
BitMap用于存储像素数据的数组。
返回
如果成功,返回 true;否则返回 false。

在文件 PixelReader.cpp104 行定义.

引用了 UE_LOG().

被这些函数引用 DumpPixels() , 以及 ASceneCaptureSensor::ReadPixels().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ WritePixelsToBuffer()

void FPixelReader::WritePixelsToBuffer ( const UTextureRenderTarget2D & RenderTarget,
uint32 Offset,
FRHICommandListImmediate & RHICmdList,
FPixelReader::Payload FuncForSending )
static

RenderTarget 中的像素复制到 Buffer。

将像素数据从渲染目标异步写入缓冲区。

前置条件
必须从渲染线程调用。
参数
RenderTarget要读取像素数据的纹理渲染目标。
Offset缓冲区的字节偏移量。
RHICmdList渲染操作的命令列表。
FuncForSending处理像素数据的回调函数。

在文件 PixelReader.cpp27 行定义.

被这些函数引用 SendPixelsInRenderThread().

+ 这是这个函数的调用关系图:

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