内容纲要
FLinearColor ReadColorFromTexture(UTexture2D* Texture2D, FVector2D Position)
{
if (Texture2D)
{
FColor PixelColor = FColor();
// 新建一个FColor指针,ImageData用于储存纹理所有位置的颜色信息
const FColor* ImageData =
static_cast<const FColor*>(Texture2D->GetPlatformData()->Mip[0].BulkData.LockReadOnly());
// 由于2X2的纹理的颜色信息会被坍缩成一维,所以用想得到的Y坐标*纹理X的长度
// 从而得到指定的Y行,再加上X作为Y行的偏移就能从一维中解析出具体位置的颜色了。
PixelColor = ImagedData[static_cast<int32>(Pos.Y) * Texture2D->GetSizeX() + static_cast<int32(Pos.X>];
//解锁刚才锁定的,然后直接返回为FLinearColor
Texture2D->GetPlatformData->Mip[0].BulkData.Unlock();
return FLinearColor(PixelColor);
}
}