Warning: Undefined array key "translationlc" in /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php on line 237

Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104

Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104

Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/fabook/_diggets/doc/v2/lib/plugins/translation/action.php:237) in /usr/www/users/fabook/_diggets/doc/v2/inc/Action/Export.php on line 104
====== Textures ====== Gorilla3D extends FMX texture support of TTextureBitmap. With default FMX behaviour you're only allowed to create a RGBA texture. ===== Texture-Kinds ===== With v0.8.2+ more texture types than 2D textures are supported. ^Format^Description^ |TGorillaTextureKind.Texture2D|Default texture kind creating a two dimensional image.| |TGorillaTextureKind.Texture3D|Creating a three dimensional texture.| |TGorillaTextureKind.CubeMap|Creating a texture with 6 sides of 2D Images.| ===== Supported Formats ===== A texture format is described by a components internal format and a general format. While the components define the exact datatypes of byte data, the general format is more a simple setup information. ==== Components / InternalFormat ==== ^Format^Description^ |TPixelFormatEx.RGBA|| |TPixelFormatEx.RGBA16F|| |TPixelFormatEx.RGBA32F|| |TPixelFormatEx.RGB|| |TPixelFormatEx.RGB16F|| |TPixelFormatEx.RGB32F|| |TPixelFormatEx.BGRA|| |TPixelFormatEx.BGR|| |TPixelFormatEx.RG|| |TPixelFormatEx.RG16F|| |TPixelFormatEx.RG32F|| |TPixelFormatEx.RGBA8|| |TPixelFormatEx.RGB8|| |TPixelFormatEx.R|| |TPixelFormatEx.R16F|| |TPixelFormatEx.R32F|| |TPixelFormatEx.Depth|| |TPixelFormatEx.Depth16|| |TPixelFormatEx.Depth24|| |TPixelFormatEx.Depth32|| |...|| ==== Format ==== ^^^ |TPixelFormatEx.RGBA|| |TPixelFormatEx.RGB|| |TPixelFormatEx.RG|| |TPixelFormatEx.R|| |TPixelFormatEx.Depth|| |...|| ===== Min-/Mag Filter ===== ^Filter^Description^ |TTextureFilter.Linear|| |TTextureFilter.Nearest|| ===== Wrapping ===== ^Kind^^ |TGorillaTextureWrap.ClampToBorder|| |TGorillaTextureWrap.ClampToEdge|| |TGorillaTextureWrap.Clamp|| |TGorillaTextureWrap.Repeated|| |TGorillaTextureWrap.MirrorRepeated|| ===== Setting up ===== To set up a Gorilla3D texture correctly, you need to encapsulate property configuration inside of BeginSetup and EndSetup method. Only then all settings will correctly be submitted to OpenGL. ===== Example ===== At first a simple example where a TGorillaTextureBitmap is created with a size of 1024 x 1024 pixels and will all necessary settings. LTexture := TGorillaTextureBitmap.Create(1024, 1024); LTexture.BeginSetup(); try with LTexture do begin Components := TPixelFormatEx.RGB32F; Format := TPixelFormatEx.RGB; MinFilter := TTextureFilter.Linear; MagFilter := TTextureFilter.Linear; WrapS := TGorillaTextureWrap.ClampToBorder; WrapT := TGorillaTextureWrap.ClampToBorder; end; finally LTexture.EndSetup(); end; Secondly a common example to ignore linear interpolation of a material texture. This becomes very useful, when displaying textures in pixelart, like minecraft. We have to disable interpolation and mipmapping. var LTexture : TGorillaTextureBitmap; begin // request the texture and convert to Gorilla3D texture bitmap. LTexture := GorillaLambertMaterialSource1.Texture as TGorillaTextureBitmap; // start manipulating properties and update them in GPU. LTexture.BeginSetup(); try LTexture.MinFilter := TTextureFilter.Nearest; LTexture.MagFilter := TTextureFilter.Nearest; LTexture.Style := LTexture.Style - [TTextureStyle.MipMaps]; finally LTexture.EndSetup(); end; // re-assign texture to update for shader GorillaLambertMaterialSource1.Texture := LTexture; end;