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;