本文整理汇总了C++中UTexture2D类的典型用法代码示例。如果您正苦于以下问题:C++ UTexture2D类的具体用法?C++ UTexture2D怎么用?C++ UTexture2D使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了UTexture2D类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1:
UTexture2D* UTensorFlowBlueprintLibrary::Conv_RenderTargetTextureToTexture2D(UTextureRenderTarget2D* PassedTexture)
{
int TextureLength = PassedTexture->SizeX * PassedTexture->SizeY;
UTexture2D* Pointer = UTexture2D::CreateTransient(PassedTexture->SizeX, PassedTexture->SizeY, PF_R8G8B8A8);
TArray<FColor> SurfData;
FRenderTarget *RenderTarget = PassedTexture->GameThread_GetRenderTargetResource();
RenderTarget->ReadPixels(SurfData);
uint8* MipData = static_cast<uint8*>(Pointer->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE));
//Copy Data
for (int i = 0; i < TextureLength; i++)
{
int MipPointer = i * 4;
const FColor& Color = SurfData[i];
uint8 AdjustedColor = (Color.R + Color.G + Color.B) / 3;
MipData[MipPointer] = AdjustedColor;
MipData[MipPointer + 1] = AdjustedColor;
MipData[MipPointer + 2] = AdjustedColor;
MipData[MipPointer + 3] = 255; //Alpha
}
//Unlock and Return data
Pointer->PlatformData->Mips[0].BulkData.Unlock();
Pointer->UpdateResource();
PassedTexture->Source.UnlockMip(0);
return Pointer;
}
开发者ID:ckyun777,项目名称:tensorflow-ue4,代码行数:29,代码来源:TensorFlowBlueprintLibrary.cpp
示例2: CreateTileSetsFromTextures
void CreateTileSetsFromTextures(TArray<UTexture2D*>& Textures)
{
const FString DefaultSuffix = TEXT("_TileSet");
FAssetToolsModule& AssetToolsModule = FModuleManager::Get().LoadModuleChecked<FAssetToolsModule>("AssetTools");
FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>("ContentBrowser");
TArray<UObject*> ObjectsToSync;
for (auto TextureIt = Textures.CreateConstIterator(); TextureIt; ++TextureIt)
{
UTexture2D* Texture = *TextureIt;
// Create the factory used to generate the tile set
UPaperTileSetFactory* TileSetFactory = NewObject<UPaperTileSetFactory>();
TileSetFactory->InitialTexture = Texture;
// Get a unique name for the tile set
FString Name;
FString PackageName;
AssetToolsModule.Get().CreateUniqueAssetName(Texture->GetOutermost()->GetName(), DefaultSuffix, /*out*/ PackageName, /*out*/ Name);
const FString PackagePath = FPackageName::GetLongPackagePath(PackageName);
if (UObject* NewAsset = AssetToolsModule.Get().CreateAsset(Name, PackagePath, UPaperTileSet::StaticClass(), TileSetFactory))
{
ObjectsToSync.Add(NewAsset);
}
}
if (ObjectsToSync.Num() > 0)
{
ContentBrowserModule.Get().SyncBrowserToAssets(ObjectsToSync);
}
}
开发者ID:JustDo1989,项目名称:UnrealEngine4.11-HairWorks,代码行数:34,代码来源:ContentBrowserExtensions.cpp
示例3: UE_LOG
UTexture2D* UTensorFlowBlueprintLibrary::Conv_FloatArrayToTexture2D(const TArray<float>& InFloatArray)
{
//Create square image and lock for writing
int32 Size = FMath::Pow(InFloatArray.Num(), 0.5);
if (Size * Size != InFloatArray.Num())
{
UE_LOG(LogTemp, Warning, TEXT("Invalid float array, needs to be square."));
return nullptr;
}
UTexture2D* Pointer = UTexture2D::CreateTransient(Size, Size, PF_R8G8B8A8);
uint8* MipData = static_cast<uint8*>(Pointer->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE));
//Copy Data
for (int i = 0; i < InFloatArray.Num(); i++)
{
int MipPointer = i * 4;
int InverseValue = (1 - InFloatArray[i]) * 255.f;
MipData[MipPointer] = InverseValue;
MipData[MipPointer + 1] = InverseValue;
MipData[MipPointer + 2] = InverseValue;
MipData[MipPointer + 3] = 255; //Alpha
}
//Unlock and Return data
Pointer->PlatformData->Mips[0].BulkData.Unlock();
Pointer->UpdateResource();
return Pointer;
}
开发者ID:ckyun777,项目名称:tensorflow-ue4,代码行数:28,代码来源:TensorFlowBlueprintLibrary.cpp
示例4: TEXT
void FAssetTypeActions_Texture::ExecuteCreateSubUVAnimation(TArray<TWeakObjectPtr<UTexture>> Objects)
{
const FString DefaultSuffix = TEXT("_SubUV");
if ( Objects.Num() == 1 )
{
UTexture2D* Object = Cast<UTexture2D>(Objects[0].Get());
if ( Object )
{
// Determine an appropriate name
FString Name;
FString PackagePath;
CreateUniqueAssetName(Object->GetOutermost()->GetName(), DefaultSuffix, PackagePath, Name);
// Create the factory used to generate the asset
USubUVAnimationFactory* Factory = NewObject<USubUVAnimationFactory>();
Factory->InitialTexture = Object;
FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>("ContentBrowser");
ContentBrowserModule.Get().CreateNewAsset(Name, FPackageName::GetLongPackagePath(PackagePath), USubUVAnimation::StaticClass(), Factory);
}
}
else
{
TArray<UObject*> ObjectsToSync;
for (auto ObjIt = Objects.CreateConstIterator(); ObjIt; ++ObjIt)
{
UTexture2D* Object = Cast<UTexture2D>((*ObjIt).Get());
if ( Object )
{
FString Name;
FString PackageName;
CreateUniqueAssetName(Object->GetOutermost()->GetName(), DefaultSuffix, PackageName, Name);
// Create the factory used to generate the asset
USubUVAnimationFactory* Factory = NewObject<USubUVAnimationFactory>();
Factory->InitialTexture = Object;
FAssetToolsModule& AssetToolsModule = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools");
UObject* NewAsset = AssetToolsModule.Get().CreateAsset(Name, FPackageName::GetLongPackagePath(PackageName), USubUVAnimation::StaticClass(), Factory);
if ( NewAsset )
{
ObjectsToSync.Add(NewAsset);
}
}
}
if ( ObjectsToSync.Num() > 0 )
{
FAssetTools::Get().SyncBrowserToAssets(ObjectsToSync);
}
}
}
开发者ID:zhaoyizheng0930,项目名称:UnrealEngine,代码行数:57,代码来源:AssetTypeActions_Texture.cpp
示例5: RefreshLightmapItems
void FLightmapCustomNodeBuilder::RefreshLightmapItems()
{
LightmapItems.Empty();
FWorldContext& Context = GEditor->GetEditorWorldContext();
UWorld* World = Context.World();
if ( World )
{
TArray<UTexture2D*> LightMapsAndShadowMaps;
World->GetLightMapsAndShadowMaps(World->GetCurrentLevel(), LightMapsAndShadowMaps);
for ( auto ObjIt = LightMapsAndShadowMaps.CreateConstIterator(); ObjIt; ++ObjIt )
{
UTexture2D* CurrentObject = *ObjIt;
if (CurrentObject)
{
FAssetData AssetData = FAssetData(CurrentObject);
const uint32 ThumbnailResolution = 64;
TSharedPtr<FAssetThumbnail> LightMapThumbnail = MakeShareable( new FAssetThumbnail( AssetData, ThumbnailResolution, ThumbnailResolution, ThumbnailPool ) );
TSharedPtr<FLightmapItem> NewItem = MakeShareable( new FLightmapItem(CurrentObject->GetPathName(), LightMapThumbnail) );
LightmapItems.Add(NewItem);
}
}
}
if ( LightmapListView.IsValid() )
{
LightmapListView->RequestListRefresh();
}
}
开发者ID:JustDo1989,项目名称:UnrealEngine4.11-HairWorks,代码行数:30,代码来源:WorldSettingsDetails.cpp
示例6: CacheCharacterCountAndMaxCharHeight
void UFont::PostLoad()
{
Super::PostLoad();
// Cache the character count and the maximum character height for this font
CacheCharacterCountAndMaxCharHeight();
for( int32 TextureIndex = 0 ; TextureIndex < Textures.Num() ; ++TextureIndex )
{
UTexture2D* Texture = Textures[TextureIndex];
if( Texture )
{
Texture->SetFlags(RF_Public);
Texture->LODGroup = TEXTUREGROUP_UI;
// Fix up compression type for distance field fonts.
if (Texture->CompressionSettings == TC_Displacementmap && !Texture->SRGB)
{
Texture->ConditionalPostLoad();
Texture->CompressionSettings = TC_DistanceFieldFont;
Texture->UpdateResource();
}
}
}
}
开发者ID:Foreven,项目名称:Unreal4-1,代码行数:25,代码来源:Font.cpp
示例7: BuildDistortionTextures
UTexture2D* ULeapMotionImageComponent::BuildDistortionTextures( const Leap::Image& Image )
{
UTexture2D* DistortionTexture = UTexture2D::CreateTransient(Image.distortionWidth() / 2, Image.distortionHeight(), PF_B8G8R8A8);
DistortionTexture->SRGB = 0;
DistortionTexture->UpdateResource();
UpdateDistortionTextures(Image, DistortionTexture);
return DistortionTexture;
}
开发者ID:ccrismond,项目名称:ueLeapChanges,代码行数:10,代码来源:LeapMotionImageComponent.cpp
示例8: check
bool FSpriteEditorViewportClient::ConvertMarqueeToSourceTextureSpace(/*out*/ FIntPoint& OutStartPos, /*out*/ FIntPoint& OutDimension)
{
FSpriteGeometryEditMode* GeometryEditMode = ModeTools->GetActiveModeTyped<FSpriteGeometryEditMode>(FSpriteGeometryEditMode::EM_SpriteGeometry);
check(GeometryEditMode);
const FVector2D MarqueeStartPos = GeometryEditMode->GetMarqueeStartPos();
const FVector2D MarqueeEndPos = GeometryEditMode->GetMarqueeEndPos();
bool bSuccessful = false;
UPaperSprite* Sprite = SourceTextureViewComponent->GetSprite();
UTexture2D* SpriteSourceTexture = Sprite->GetSourceTexture();
if (SpriteSourceTexture != nullptr)
{
// Calculate world space positions
FSceneViewFamilyContext ViewFamily(FSceneViewFamily::ConstructionValues(Viewport, GetScene(), EngineShowFlags));
FSceneView* View = CalcSceneView(&ViewFamily);
const FVector StartPos = View->PixelToWorld(MarqueeStartPos.X, MarqueeStartPos.Y, 0);
const FVector EndPos = View->PixelToWorld(MarqueeEndPos.X, MarqueeEndPos.Y, 0);
// Convert to source texture space to work out the pixels dragged
FVector2D TextureSpaceStartPos = Sprite->ConvertWorldSpaceToTextureSpace(StartPos);
FVector2D TextureSpaceEndPos = Sprite->ConvertWorldSpaceToTextureSpace(EndPos);
if (TextureSpaceStartPos.X > TextureSpaceEndPos.X)
{
Swap(TextureSpaceStartPos.X, TextureSpaceEndPos.X);
}
if (TextureSpaceStartPos.Y > TextureSpaceEndPos.Y)
{
Swap(TextureSpaceStartPos.Y, TextureSpaceEndPos.Y);
}
const FIntPoint SourceTextureSize(SpriteSourceTexture->GetImportedSize());
const int32 SourceTextureWidth = SourceTextureSize.X;
const int32 SourceTextureHeight = SourceTextureSize.Y;
FIntPoint TSStartPos;
TSStartPos.X = FMath::Clamp<int32>((int32)TextureSpaceStartPos.X, 0, SourceTextureWidth - 1);
TSStartPos.Y = FMath::Clamp<int32>((int32)TextureSpaceStartPos.Y, 0, SourceTextureHeight - 1);
FIntPoint TSEndPos;
TSEndPos.X = FMath::Clamp<int32>((int32)TextureSpaceEndPos.X, 0, SourceTextureWidth - 1);
TSEndPos.Y = FMath::Clamp<int32>((int32)TextureSpaceEndPos.Y, 0, SourceTextureHeight - 1);
const FIntPoint TextureSpaceDimensions = TSEndPos - TSStartPos;
if ((TextureSpaceDimensions.X > 0) || (TextureSpaceDimensions.Y > 0))
{
OutStartPos = TSStartPos;
OutDimension = TextureSpaceDimensions;
bSuccessful = true;
}
}
return bSuccessful;
}
开发者ID:PickUpSU,项目名称:UnrealEngine4,代码行数:54,代码来源:SpriteEditorViewportClient.cpp
示例9: UpdateSelectedTexel
static bool UpdateSelectedTexel(
UPrimitiveComponent* Component,
int32 NodeIndex,
FLightMapRef& Lightmap,
const FVector& Position,
FVector2D InterpolatedUV,
int32 LocalX, int32 LocalY,
int32 LightmapSizeX, int32 LightmapSizeY)
{
if (Component == GCurrentSelectedLightmapSample.Component
&& NodeIndex == GCurrentSelectedLightmapSample.NodeIndex
&& LocalX == GCurrentSelectedLightmapSample.LocalX
&& LocalY == GCurrentSelectedLightmapSample.LocalY)
{
return false;
}
else
{
// Store information about the selected texel
FSelectedLightmapSample NewSelectedTexel(Component, NodeIndex, Lightmap, Position, LocalX, LocalY, LightmapSizeX, LightmapSizeY);
if (IsValidRef(Lightmap))
{
FLightMap2D* Lightmap2D = Lightmap->GetLightMap2D();
check(Lightmap2D);
const FVector2D CoordinateScale = Lightmap2D->GetCoordinateScale();
const FVector2D CoordinateBias = Lightmap2D->GetCoordinateBias();
// Calculate lightmap atlas UV's for the selected point
FVector2D LightmapUV = InterpolatedUV * CoordinateScale + CoordinateBias;
int32 LightmapIndex = Lightmap2D->AllowsHighQualityLightmaps() ? 0 : 1;
UTexture2D* CurrentLightmap = Lightmap2D->GetTexture( LightmapIndex );
// UV's in the lightmap atlas
NewSelectedTexel.LightmapX = FMath::TruncToInt(LightmapUV.X * CurrentLightmap->GetSizeX());
NewSelectedTexel.LightmapY = FMath::TruncToInt(LightmapUV.Y * CurrentLightmap->GetSizeY());
// Write the selection color to the selected lightmap texel
WriteTexel(CurrentLightmap, NewSelectedTexel.LightmapX, NewSelectedTexel.LightmapY, GTexelSelectionColor, NewSelectedTexel.OriginalColor);
GCurrentSelectedLightmapSample = NewSelectedTexel;
return true;
}
else
{
UE_LOG(LogStaticLightingSystem, Log, TEXT("Texel selection failed because the lightmap is an invalid reference!"));
return false;
}
}
}
开发者ID:Foreven,项目名称:Unreal4-1,代码行数:48,代码来源:StaticLightingDebug.cpp
示例10: sizeof
//Grayscale average texture
UTexture2D* PrivateLeapImage::Texture32FromLeapImage(int32 SrcWidth, int32 SrcHeight, uint8* imageBuffer)
{
// Lock the texture so it can be modified
if (imagePointer == NULL)
return NULL;
uint8* MipData = static_cast<uint8*>(imagePointer->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE));
// Create base mip.
uint8* DestPtr = NULL;
const uint8* SrcPtr = NULL;
for (int32 y = 0; y<SrcHeight; y++)
{
DestPtr = &MipData[(SrcHeight - 1 - y) * SrcWidth * sizeof(FColor)];
SrcPtr = const_cast<uint8*>(&imageBuffer[(SrcHeight - 1 - y) * SrcWidth]);
for (int32 x = 0; x<SrcWidth; x++)
{
//Grayscale, copy to all channels
*DestPtr++ = *SrcPtr;
*DestPtr++ = *SrcPtr;
*DestPtr++ = *SrcPtr;
*DestPtr++ = 0xFF;
SrcPtr++;
}
}
// Unlock the texture
imagePointer->PlatformData->Mips[0].BulkData.Unlock();
imagePointer->UpdateResource();
return imagePointer;
}
开发者ID:vimaxus,项目名称:leap-ue4,代码行数:34,代码来源:LeapImage.cpp
示例11: GetThumbnailSize
void UFontThumbnailRenderer::GetThumbnailSize(UObject* Object, float Zoom,uint32& OutWidth,uint32& OutHeight) const
{
UFont* Font = Cast<UFont>(Object);
if (Font != nullptr &&
Font->Textures.Num() > 0 &&
Font->Textures[0] != nullptr)
{
// Get the texture interface for the font text
UTexture2D* Tex = Font->Textures[0];
OutWidth = FMath::TruncToInt(Zoom * (float)Tex->GetSurfaceWidth());
OutHeight = FMath::TruncToInt(Zoom * (float)Tex->GetSurfaceHeight());
}
else
{
OutWidth = OutHeight = 0;
}
}
开发者ID:Art1stical,项目名称:AHRUnrealEngine,代码行数:17,代码来源:FontThumbnailRenderer.cpp
示例12: GetUsedTextures
void UMaterialInterface::SetForceMipLevelsToBeResident( bool OverrideForceMiplevelsToBeResident, bool bForceMiplevelsToBeResidentValue, float ForceDuration, int32 CinematicTextureGroups )
{
TArray<UTexture*> Textures;
GetUsedTextures(Textures, EMaterialQualityLevel::Num, false, ERHIFeatureLevel::Num, true);
for ( int32 TextureIndex=0; TextureIndex < Textures.Num(); ++TextureIndex )
{
UTexture2D* Texture = Cast<UTexture2D>(Textures[TextureIndex]);
if ( Texture )
{
Texture->SetForceMipLevelsToBeResident( ForceDuration, CinematicTextureGroups );
if (OverrideForceMiplevelsToBeResident)
{
Texture->bForceMiplevelsToBeResident = bForceMiplevelsToBeResidentValue;
}
}
}
}
开发者ID:Foreven,项目名称:Unreal4-1,代码行数:18,代码来源:MaterialInterface.cpp
示例13: GetTexture
UTexture2D* ULRRTextureManager::GetTexture(FString path, bool alpha) {
TArray<uint8> RawFileData;
FFileHelper::LoadFileToArray(RawFileData, *path, 0);
if (RawFileData.Num() != 0)
{
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName(TEXT("ImageWrapper")));
// Note: PNG format. Other formats are supported
IImageWrapperPtr ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::BMP);
if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))
{
const TArray<uint8>* UncompressedBGRA = nullptr;
TArray<uint8> UncompressedRGBA;
if (ImageWrapper->GetRaw(ERGBFormat::BGRA, 8, UncompressedBGRA))
{
// Create the UTexture for rendering
UncompressedRGBA.AddZeroed(UncompressedBGRA->Num());
for (int i = 0; UncompressedBGRA->Num() > i; i += 4) {
UncompressedRGBA[i] = (*UncompressedBGRA)[i + 2];
UncompressedRGBA[i + 1] = (*UncompressedBGRA)[i + 1];
UncompressedRGBA[i + 2] = (*UncompressedBGRA)[i];
UncompressedRGBA[i + 3] = (*UncompressedBGRA)[i + 3];
if (alpha) {
if ((UncompressedRGBA[i] + UncompressedRGBA[i + 1] + UncompressedRGBA[i + 2]) < 3) {
UncompressedRGBA[i + 3] = 0;
}
}
}
UTexture2D* MyTexture = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), PF_R8G8B8A8);
// Fill in the source data from the file
uint8* TextureData = (uint8*)MyTexture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(TextureData, UncompressedRGBA.GetData(), UncompressedRGBA.Num());
MyTexture->PlatformData->Mips[0].BulkData.Unlock();
// Update the rendering resource from data.
MyTexture->UpdateResource();
return MyTexture;
}
}
}
return nullptr;
}
开发者ID:AmateurCz,项目名称:UnrealRaiders,代码行数:43,代码来源:LRRTextureManager.cpp
示例14: CacheCharacterCountAndMaxCharHeight
void UFont::PostLoad()
{
Super::PostLoad();
// Cache the character count and the maximum character height for this font
CacheCharacterCountAndMaxCharHeight();
for( int32 TextureIndex = 0 ; TextureIndex < Textures.Num() ; ++TextureIndex )
{
UTexture2D* Texture = Textures[TextureIndex];
if( Texture )
{
Texture->SetFlags(RF_Public);
Texture->LODGroup = TEXTUREGROUP_UI;
}
}
}
开发者ID:Tigrouzen,项目名称:UnrealEngine-4,代码行数:19,代码来源:Font.cpp
示例15: Draw
void FPaperExtractSpritesViewportClient::Draw(FViewport* Viewport, FCanvas* Canvas)
{
// Super will clear the viewport
FPaperEditorViewportClient::Draw(Viewport, Canvas);
UTexture2D* Texture = TextureBeingExtracted.Get();
if (Texture != nullptr)
{
const bool bUseTranslucentBlend = Texture->HasAlphaChannel();
// Fully stream in the texture before drawing it.
Texture->SetForceMipLevelsToBeResident(30.0f);
Texture->WaitForStreaming();
FLinearColor TextureDrawColor = Settings->TextureTint;
//FLinearColor RectOutlineColor = FLinearColor::Yellow;
const FLinearColor RectOutlineColor = Settings->OutlineColor;
const float XPos = -ZoomPos.X * ZoomAmount;
const float YPos = -ZoomPos.Y * ZoomAmount;
const float Width = Texture->GetSurfaceWidth() * ZoomAmount;
const float Height = Texture->GetSurfaceHeight() * ZoomAmount;
Canvas->DrawTile(XPos, YPos, Width, Height, 0.0f, 0.0f, 1.0f, 1.0f, TextureDrawColor, Texture->Resource, bUseTranslucentBlend);
for (FPaperExtractedSprite Sprite : ExtractedSprites)
{
DrawRectangle(Canvas, RectOutlineColor, Sprite.Rect);
}
}
}
开发者ID:Codermay,项目名称:Unreal4,代码行数:32,代码来源:SPaperExtractSpritesDialog.cpp
示例16: TEXT
//.........这里部分代码省略.........
{
FString FileName = GetFilePath(CurPath, NewProject->Settings.ImageBaseDirectory, ImagePaths[i]);
UTexture* ImportedTexture = NULL;
if(ExistImages && ExistImages->Contains(ImagePaths[i]))
{
ImportedTexture = ExistImages->FindChecked(ImagePaths[i]);
}
TArray<uint8> Data;
if(FFileHelper::LoadFileToArray(Data, *FileName))
{
UTextureFactory* TextureFact = NewObject<UTextureFactory>();
TextureFact->AddToRoot();
FString TextureName = FPaths::GetBaseFilename(ImagePaths[i]);
UPackage* TexturePackage = NULL;
if(ImportedTexture)
{
TexturePackage = ImportedTexture->GetOutermost();
}
else
{
FString TexturePackageName;
FString BasePackageName = FPackageName::GetLongPackagePath(InParent->GetOutermost()->GetName()) / TextureName;
AssetToolsModule.Get().CreateUniqueAssetName(BasePackageName, TEXT(""), TexturePackageName, TextureName);
TexturePackage = CreatePackage(NULL, *TexturePackageName);
}
const uint8* BufferBegin = Data.GetData();
const uint8* BufferEnd = BufferBegin + Data.Num();
UTexture2D* NewTexture = (UTexture2D*)TextureFact->FactoryCreateBinary(
UTexture2D::StaticClass(),
TexturePackage,
FName(*TextureName),
Flags,
NULL,
*FPaths::GetExtension(ImagePaths[i]),
BufferBegin, BufferEnd,
Warn
);
if(NewTexture)
{
if(ImportSettings->bOverwriteMipGenSettings)
{
NewTexture->MipGenSettings = TMGS_NoMipmaps;
}
if(ImportSettings->bOverwriteTextureGroup)
{
NewTexture->LODGroup = ImportSettings->TextureGroup;
}
if(ImportSettings->bOverwriteCompressionSettings)
{
NewTexture->CompressionSettings = TextureCompressionSettings::TC_EditorIcon;
}
if(ImportSettings->bOverwriteTilingMethodFromSspj)
{
switch(ImageWrapModes[i])
{
case SsTexWrapMode::Clamp:
{
NewTexture->AddressX = NewTexture->AddressY = TA_Clamp;
} break;
case SsTexWrapMode::Repeat:
开发者ID:KoujiMatsumori,项目名称:SS5PlayerForUnrealEngine4,代码行数:67,代码来源:SspjFactory.cpp
示例17: It
/**
* For the given text, constructs a mesh to be used by the vertex factory for rendering.
*/
bool FTextRenderSceneProxy::BuildStringMesh( TArray<FDynamicMeshVertex>& OutVertices, TArray<uint16>& OutIndices )
{
if(!Font || Text.IsEmpty())
{
return false;
}
float FirstLineHeight = -1; // Only kept around for legacy positioning support
float StartY = 0;
const float CharIncrement = ( (float)Font->Kerning + HorizSpacingAdjust ) * XScale;
float LineX = 0;
const int32 PageIndex = 0;
FTextIterator It(*Text.ToString());
while (It.NextLine())
{
FVector2D LineSize = ComputeTextSize(It, Font, XScale, YScale, HorizSpacingAdjust);
float StartX = ComputeHorizontalAlignmentOffset(LineSize, HorizontalAlignment);
if (FirstLineHeight < 0)
{
FirstLineHeight = LineSize.Y;
}
LineX = 0;
int32 Ch;
while (It.NextCharacterInLine(Ch))
{
Ch = (int32)Font->RemapChar(Ch);
if(!Font->Characters.IsValidIndex(Ch + PageIndex))
{
continue;
}
FFontCharacter& Char = Font->Characters[Ch + PageIndex];
if(!Font->Textures.IsValidIndex(Char.TextureIndex))
{
continue;
}
UTexture2D* Tex = Font->Textures[Char.TextureIndex];
if(Tex)
{
FIntPoint ImportedTextureSize = Tex->GetImportedSize();
FVector2D InvTextureSize(1.0f / (float)ImportedTextureSize.X, 1.0f / (float)ImportedTextureSize.Y);
const float X = LineX + StartX;
const float Y = StartY + Char.VerticalOffset * YScale;
float SizeX = Char.USize * XScale;
const float SizeY = Char.VSize * YScale;
const float U = Char.StartU * InvTextureSize.X;
const float V = Char.StartV * InvTextureSize.Y;
const float SizeU = Char.USize * InvTextureSize.X;
const float SizeV = Char.VSize * InvTextureSize.Y;
float Left = X;
float Top = Y;
float Right = X + SizeX;
float Bottom = Y + SizeY;
// axis choice and sign to get good alignment when placed on surface
FVector4 V0 = FVector4(0, -Left, -Top, 0);
FVector4 V1 = FVector4(0, -Right, -Top, 0);
FVector4 V2 = FVector4(0, -Left, -Bottom, 0);
FVector4 V3 = FVector4(0, -Right, -Bottom, 0);
FVector TangentX(0, -1, 0);
FVector TangentY(0, 0, -1);
FVector TangentZ(1, 0, 0);
int32 V00 = OutVertices.Add(FDynamicMeshVertex(V0, TangentX, TangentZ, FVector2D(U, V), TextRenderColor));
int32 V10 = OutVertices.Add(FDynamicMeshVertex(V1, TangentX, TangentZ, FVector2D(U + SizeU, V), TextRenderColor));
int32 V01 = OutVertices.Add(FDynamicMeshVertex(V2, TangentX, TangentZ, FVector2D(U, V + SizeV), TextRenderColor));
int32 V11 = OutVertices.Add(FDynamicMeshVertex(V3, TangentX, TangentZ, FVector2D(U + SizeU, V + SizeV), TextRenderColor));
check(V00 < 65536);
check(V10 < 65536);
check(V01 < 65536);
check(V11 < 65536);
OutIndices.Add(V00);
OutIndices.Add(V11);
OutIndices.Add(V10);
OutIndices.Add(V00);
OutIndices.Add(V01);
OutIndices.Add(V11);
// if we have another non-whitespace character to render, add the font's kerning.
int32 NextChar;
//.........这里部分代码省略.........
开发者ID:RandomDeveloperM,项目名称:UE4_Hairworks,代码行数:101,代码来源:TextRenderComponent.cpp
示例18: ComputeTextSize
// @param It must be a valid initialized text iterator
// @param Font 0 is silently ignored
FVector2D ComputeTextSize(FTextIterator It, class UFont* Font,
float XScale, float YScale, float HorizSpacingAdjust)
{
FVector2D Ret(0, 0);
if(!Font)
{
return Ret;
}
const float CharIncrement = ( (float)Font->Kerning + HorizSpacingAdjust ) * XScale;
float LineX = 0;
const int32 PageIndex = 0;
int32 Ch;
while (It.NextCharacterInLine(Ch))
{
Ch = (int32)Font->RemapChar(Ch);
if(!Font->Characters.IsValidIndex(Ch + PageIndex))
{
continue;
}
FFontCharacter& Char = Font->Characters[Ch + PageIndex];
if(!Font->Textures.IsValidIndex(Char.TextureIndex))
{
continue;
}
UTexture2D* Tex = Font->Textures[Char.TextureIndex];
if(Tex)
{
FIntPoint ImportedTextureSize = Tex->GetImportedSize();
FVector2D InvTextureSize(1.0f / (float)ImportedTextureSize.X, 1.0f / (float)ImportedTextureSize.Y);
const float X = LineX;
const float Y = Char.VerticalOffset * YScale;
float SizeX = Char.USize * XScale;
const float SizeY = Char.VSize * YScale;
const float U = Char.StartU * InvTextureSize.X;
const float V = Char.StartV * InvTextureSize.Y;
const float SizeU = Char.USize * InvTextureSize.X;
const float SizeV = Char.VSize * InvTextureSize.Y;
float Right = X + SizeX;
float Bottom = Y + SizeY;
Ret.X = FMath::Max(Ret.X, Right);
Ret.Y = FMath::Max(Ret.Y, Bottom);
// if we have another non-whitespace character to render, add the font's kerning.
int32 NextCh;
if( It.Peek(NextCh) && !FChar::IsWhitespace(NextCh) )
{
SizeX += CharIncrement;
}
LineX += SizeX;
}
}
return Ret;
}
开发者ID:RandomDeveloperM,项目名称:UE4_Hairworks,代码行数:70,代码来源:TextRenderComponent.cpp
示例19: Draw
void USlateBrushThumbnailRenderer::Draw(UObject* Object, int32 X, int32 Y, uint32 Width, uint32 Height, FRenderTarget* RenderTarget, FCanvas* Canvas)
{
USlateBrushAsset* SlateBrushAsset = Cast<USlateBrushAsset>(Object);
if (SlateBrushAsset)
{
FSlateBrush Brush = SlateBrushAsset->Brush;
UTexture2D* Texture = Cast<UTexture2D>( Brush.GetResourceObject() );
// Draw the background checkboard pattern
const int32 CheckerDensity = 8;
auto* Checker = UThumbnailManager::Get().CheckerboardTexture;
Canvas->DrawTile(
0.0f, 0.0f, Width, Height, // Dimensions
0.0f, 0.0f, CheckerDensity, CheckerDensity, // UVs
FLinearColor::White, Checker->Resource); // Tint & Texture
if (Texture)
{
switch(Brush.DrawAs)
{
case ESlateBrushDrawType::Image:
{
FCanvasTileItem CanvasTile( FVector2D( X, Y ), Texture->Resource, FVector2D( Width,Height ), Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
CanvasTile.Draw( Canvas );
}
break;
case ESlateBrushDrawType::Border:
{
FCanvasTileItem CanvasTile( FVector2D( X, Y ), Texture->Resource, FVector2D( Width,Height ), Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
CanvasTile.Draw( Canvas );
}
break;
case ESlateBrushDrawType::Box:
{
float NaturalWidth = Texture->GetSurfaceWidth();
float NaturalHeight = Texture->GetSurfaceHeight();
float TopPx = FMath::Clamp<float>(NaturalHeight * Brush.Margin.Top, 0, Height);
float BottomPx = FMath::Clamp<float>(NaturalHeight * Brush.Margin.Bottom, 0, Height);
float VerticalCenterPx = FMath::Clamp<float>(Height - TopPx - BottomPx, 0, Height);
float LeftPx = FMath::Clamp<float>(NaturalWidth * Brush.Margin.Left, 0, Width);
float RightPx = FMath::Clamp<float>(NaturalWidth * Brush.Margin.Right, 0, Width);
float HorizontalCenterPx = FMath::Clamp<float>(Width - LeftPx - RightPx, 0, Width);
// Top-Left
FVector2D TopLeftSize( LeftPx, TopPx );
{
FVector2D UV0( 0, 0 );
FVector2D UV1( Brush.Margin.Left, Brush.Margin.Top );
FCanvasTileItem CanvasTile( FVector2D( X, Y ), Texture->Resource, TopLeftSize, UV0, UV1, Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
CanvasTile.Draw( Canvas );
}
// Bottom-Left
FVector2D BottomLeftSize( LeftPx, BottomPx );
{
FVector2D UV0( 0, 1 - Brush.Margin.Bottom );
FVector2D UV1( Brush.Margin.Left, 1 );
FCanvasTileItem CanvasTile( FVector2D( X, Y + Height - BottomPx ), Texture->Resource, BottomLeftSize, UV0, UV1, Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
CanvasTile.Draw( Canvas );
}
// Top-Right
FVector2D TopRightSize( RightPx, TopPx );
{
FVector2D UV0( 1 - Brush.Margin.Right, 0 );
FVector2D UV1( 1, Brush.Margin.Top );
FCanvasTileItem CanvasTile( FVector2D( X + Width - RightPx, Y ), Texture->Resource, TopRightSize, UV0, UV1, Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
CanvasTile.Draw( Canvas );
}
// Bottom-Right
FVector2D BottomRightSize( RightPx, BottomPx );
{
FVector2D UV0( 1 - Brush.Margin.Right, 1 - Brush.Margin.Bottom );
FVector2D UV1( 1, 1 );
FCanvasTileItem CanvasTile( FVector2D( X + Width - RightPx, Y + Height - BottomPx ), Texture->Resource, BottomRightSize, UV0, UV1, Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
CanvasTile.Draw( Canvas );
}
//-----------------------------------------------------------------------
// Center-Vertical-Left
FVector2D CenterVerticalLeftSize( LeftPx, VerticalCenterPx );
{
FVector2D UV0( 0, Brush.Margin.Top );
FVector2D UV1( Brush.Margin.Left, 1 - Brush.Margin.Bottom );
FCanvasTileItem CanvasTile( FVector2D( X, Y + TopPx), Texture->Resource, CenterVerticalLeftSize, UV0, UV1, Brush.TintColor.GetSpecifiedColor() );
CanvasTile.BlendMode = SE_BLEND_Translucent;
//.........这里部分代码省略.........
开发者ID:Tigrouzen,项目名称:UnrealEngine-4,代码行数:101,代码来源:SlateBrushThumbnailRenderer.cpp
示例20: InverseTextureSize
void UPaperTileMapComponent::RebuildRenderData(FPaperTileMapRenderSceneProxy* Proxy)
{
TArray<FSpriteDrawCallRecord> BatchedSprites;
if (TileMap == nullptr)
{
return;
}
FVector CornerOffset;
FVector OffsetYFactor;
FVector StepPerTileX;
FVector StepPerTileY;
TileMap->GetTileToLocalParameters(/*out*/ CornerOffset, /*out*/ StepPerTileX, /*out*/ StepPerTileY, /*out*/ OffsetYFactor);
UTexture2D* LastSourceTexture = nullptr;
FVector TileSetOffset = FVector::ZeroVector;
FVector2D InverseTextureSize(1.0f, 1.0f);
FVector2D SourceDimensionsUV(1.0f, 1.0f);
FVector2D TileSizeXY(0.0f, 0.0f);
for (int32 Z = 0; Z < TileMap->TileLayers.Num(); ++Z)
{
UPaperTileLayer* Layer = TileMap->TileLayers[Z];
if (Layer == nullptr)
{
continue;
}
FLinearColor DrawColor = FLinearColor::White;
#if WITH_EDITORONLY_DATA
if (Layer->bHiddenInEditor)
{
continue;
}
DrawColor.A = Layer->LayerOpacity;
#endif
FSpriteDrawCallRecord* CurrentBatch = nullptr;
for (int32 Y = 0; Y < TileMap->MapHeight; ++Y)
{
// In pixels
FVector EffectiveTopLeftCorner;
switch (TileMap->ProjectionMode)
{
case ETileMapProjectionMode::Orthogonal:
default:
EffectiveTopLeftCorner = CornerOffset;
break;
case ETileMapProjectionMode::IsometricDiamond:
EffectiveTopLeftCorner = CornerOffset - StepPerTileX;
break;
case ETileMapProjectionMode::IsometricStaggered:
case ETileMapProjectionMode::HexagonalStaggered:
EffectiveTopLeftCorner = CornerOffset + (Y & 1) * OffsetYFactor;
break;
}
for (int32 X = 0; X < TileMap->MapWidth; ++X)
{
const FPaperTileInfo TileInfo = Layer->GetCell(X, Y);
// do stuff
const float TotalSeparation = (TileMap->SeparationPerLayer * Z) + (TileMap->SeparationPerTileX * X) + (TileMap->SeparationPerTileY * Y);
FVector TopLeftCornerOfTile = (StepPerTileX * X) + (StepPerTileY * Y) + EffectiveTopLeftCorner;
TopLeftCornerOfTile += TotalSeparation * PaperAxisZ;
const int32 TileWidth = TileMap->TileWidth;
const int32 TileHeight = TileMap->TileHeight;
{
UTexture2D* SourceTexture = nullptr;
FVector2D SourceUV = FVector2D::ZeroVector;
if (Layer->bCollisionLayer)
{
if (TileInfo.PackedTileIndex == 0)
{
continue;
}
SourceTexture = UCanvas::StaticClass()->GetDefaultObject<UCanvas>()->DefaultTexture;
}
else
{
if (TileInfo.TileSet == nullptr)
{
continue;
}
if (!TileInfo.TileSet->GetTileUV(TileInfo.PackedTileIndex, /*out*/ SourceUV))
{
continue;
}
SourceTexture = TileInfo.TileSet->TileSheet;
//.........这里部分代码省略.........
开发者ID:kidaa,项目名称:UnrealEngineVR,代码行数:101,代码来源:PaperTileMapComponent.cpp
注:本文中的UTexture2D类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论