Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
textures [2020/05/25 12:31] – [Example] admin | textures [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 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.RG|| | ||
- | |TPixelFormatEx.RG16F|| | ||
- | |TPixelFormatEx.RG32F|| | ||
- | |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. | ||
- | |||
- | <file pascal> | ||
- | LTexture := TGorillaTextureBitmap.Create(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. | ||
- | |||
- | <file pascal> | ||
- | var LTexture : TGorillaTextureBitmap; | ||
- | begin | ||
- | // request the texture and convert to Gorilla3D texture bitmap. | ||
- | LTexture := GorillaLambertMaterialSource.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 | ||
- | GorillaLambertMaterialSource.Texture := LTexture; | ||
- | end; | ||
- | </ |