📄 gltexture.pas
字号:
clrDarkTurquoise : TColorVector = (0.439216, 0.576471, 0.858824, 1);
clrFirebrick : TColorVector = (0.556863, 0.137255, 0.137255, 1);
clrForestGreen : TColorVector = (0.137255, 0.556863, 0.137255, 1);
clrGold : TColorVector = (0.8, 0.498039, 0.196078, 1);
clrGoldenrod : TColorVector = (0.858824, 0.858824, 0.439216, 1);
clrGreenYellow : TColorVector = (0.576471, 0.858824, 0.439216, 1);
clrIndian : TColorVector = (0.309804, 0.184314, 0.184314, 1);
clrKhaki : TColorVector = (0.623529, 0.623529, 0.372549, 1);
clrLightBlue : TColorVector = (0.74902, 0.847059, 0.847059, 1);
clrLightSteelBlue : TColorVector = (0.560784, 0.560784, 0.737255, 1);
clrLimeGreen : TColorVector = (0.196078, 0.8, 0.196078, 1);
clrMaroon : TColorVector = (0.556863, 0.137255, 0.419608, 1);
clrMediumAquamarine : TColorVector = (0.196078, 0.8, 0.6, 1);
clrMediumBlue : TColorVector = (0.196078, 0.196078, 0.8, 1);
clrMediumForestGreen : TColorVector = (0.419608, 0.556863, 0.137255, 1);
clrMediumGoldenrod : TColorVector = (0.917647, 0.917647, 0.678431, 1);
clrMediumOrchid : TColorVector = (0.576471, 0.439216, 0.858824, 1);
clrMediumSeaGreen : TColorVector = (0.258824, 0.435294, 0.258824, 1);
clrMediumSlateBlue : TColorVector = (0.498039, 0, 1, 1);
clrMediumSpringGreen : TColorVector = (0.498039, 1, 0, 1);
clrMediumTurquoise : TColorVector = (0.439216, 0.858824, 0.858824, 1);
clrMediumViolet : TColorVector = (0.858824, 0.439216, 0.576471, 1);
clrMidnightBlue : TColorVector = (0.184314, 0.184314, 0.309804, 1);
clrNavy : TColorVector = (0.137255, 0.137255, 0.556863, 1);
clrNavyBlue : TColorVector = (0.137255, 0.137255, 0.556863, 1);
clrOrange : TColorVector = (1, 0.5, 0.0, 1);
clrOrangeRed : TColorVector = (1, 0.25, 0, 1);
clrOrchid : TColorVector = (0.858824, 0.439216, 0.858824, 1);
clrPaleGreen : TColorVector = (0.560784, 0.737255, 0.560784, 1);
clrPink : TColorVector = (0.737255, 0.560784, 0.560784, 1);
clrPlum : TColorVector = (0.917647, 0.678431, 0.917647, 1);
clrSalmon : TColorVector = (0.435294, 0.258824, 0.258824, 1);
clrSeaGreen : TColorVector = (0.137255, 0.556863, 0.419608, 1);
clrSienna : TColorVector = (0.556863, 0.419608, 0.137255, 1);
clrSkyBlue : TColorVector = (0.196078, 0.6, 0.8, 1);
clrSlateBlue : TColorVector = (0, 0.498039, 1, 1);
clrSpringGreen : TColorVector = (0, 1, 0.498039, 1);
clrSteelBlue : TColorVector = (0.137255, 0.419608, 0.556863, 1);
clrTan : TColorVector = (0.858824, 0.576471, 0.439216, 1);
clrThistle : TColorVector = (0.847059, 0.74902, 0.847059, 1);
clrTurquoise : TColorVector = (0.678431, 0.917647, 0.917647, 1);
clrViolet : TColorVector = (0.309804, 0.184314, 0.309804, 1);
clrVioletRed : TColorVector = (0.8, 0.196078, 0.6, 1);
clrWheat : TColorVector = (0.847059, 0.847059, 0.74902, 1);
clrYellowGreen : TColorVector = (0.6, 0.8, 0.196078, 1);
clrSummerSky : TColorVector = (0.22, 0.69, 0.87, 1);
clrRichBlue : TColorVector = (0.35, 0.35, 0.67, 1);
clrBrass : TColorVector = (0.71, 0.65, 0.26, 1);
clrCopper : TColorVector = (0.72, 0.45, 0.20, 1);
clrBronze : TColorVector = (0.55, 0.47, 0.14, 1);
clrBronze2 : TColorVector = (0.65, 0.49, 0.24, 1);
clrSilver : TColorVector = (0.90, 0.91, 0.98, 1);
clrBrightGold : TColorVector = (0.85, 0.85, 0.10, 1);
clrOldGold : TColorVector = (0.81, 0.71, 0.23, 1);
clrFeldspar : TColorVector = (0.82, 0.57, 0.46, 1);
clrQuartz : TColorVector = (0.85, 0.85, 0.95, 1);
clrNeonPink : TColorVector = (1.00, 0.43, 0.78, 1);
clrDarkPurple : TColorVector = (0.53, 0.12, 0.47, 1);
clrNeonBlue : TColorVector = (0.30, 0.30, 1.00, 1);
clrCoolCopper : TColorVector = (0.85, 0.53, 0.10, 1);
clrMandarinOrange : TColorVector = (0.89, 0.47, 0.20, 1);
clrLightWood : TColorVector = (0.91, 0.76, 0.65, 1);
clrMediumWood : TColorVector = (0.65, 0.50, 0.39, 1);
clrDarkWood : TColorVector = (0.52, 0.37, 0.26, 1);
clrSpicyPink : TColorVector = (1.00, 0.11, 0.68, 1);
clrSemiSweetChoc : TColorVector = (0.42, 0.26, 0.15, 1);
clrBakersChoc : TColorVector = (0.36, 0.20, 0.09, 1);
clrFlesh : TColorVector = (0.96, 0.80, 0.69, 1);
clrNewTan : TColorVector = (0.92, 0.78, 0.62, 1);
clrNewMidnightBlue : TColorVector = (0.00, 0.00, 0.61, 1);
clrVeryDarkBrown : TColorVector = (0.35, 0.16, 0.14, 1);
clrDarkBrown : TColorVector = (0.36, 0.25, 0.20, 1);
clrDarkTan : TColorVector = (0.59, 0.41, 0.31, 1);
clrGreenCopper : TColorVector = (0.32, 0.49, 0.46, 1);
clrDkGreenCopper : TColorVector = (0.29, 0.46, 0.43, 1);
clrDustyRose : TColorVector = (0.52, 0.39, 0.39, 1);
clrHuntersGreen : TColorVector = (0.13, 0.37, 0.31, 1);
clrScarlet : TColorVector = (0.55, 0.09, 0.09, 1);
clrMediumPurple : TColorVector = (0.73, 0.16, 0.96, 1);
clrLightPurple : TColorVector = (0.87, 0.58, 0.98, 1);
clrVeryLightPurple : TColorVector = (0.94, 0.81, 0.99, 1);
clrGreen : TColorVector = (0, 0.5, 0, 1);
clrOlive : TColorVector = (0.5, 0.5, 1, 1);
clrPurple : TColorVector = (1, 0, 1, 1);
clrTeal : TColorVector = (0, 0.5, 0.5, 1);
clrRed : TColorVector = (1, 0, 0, 1);
clrLime : TColorVector = (0, 1, 0, 1);
clrYellow : TColorVector = (1, 1, 0, 1);
clrBlue : TColorVector = (0, 0, 1, 1);
clrFuchsia : TColorVector = (1, 0, 1, 1);
clrAqua : TColorVector = (0, 1, 1, 1);
cDefaultNormalMapScale = 0.125;
type
PRGBColor = ^TRGBColor;
TRGBColor = TAffineByteVector;
TGLTextureMode = (tmDecal, tmModulate, tmBlend, tmReplace);
TGLTextureWrap = (twBoth, twNone, twVertical, twHorizontal);
TGLTextureTarget = (ttTexture1d, ttTexture2d, ttTexture3d,
ttTextureRect, ttTextureCube);
TGLFaceProperties = class;
TGLTexture = class;
TGLMaterial = class;
TGLMaterialLibrary = class;
//an interface for proper TGLLibMaterialNameProperty support
IGLMaterialLibrarySupported = interface(IInterface)
['{8E442AF9-D212-4A5E-8A88-92F798BABFD1}']
function GetMaterialLibrary: TGLMaterialLibrary;
end;
TDrawState = (dsRendering, dsPicking, dsPrinting);
TGLSize = record
cx : Longint;
cy : Longint;
end;
// TRenderContextInfo
//
{: Stores contextual info useful during rendering methods. }
TRenderContextInfo = record
scene : TObject;
buffer : TObject;
cameraPosition : TVector;
cameraDirection, cameraUp : TVector;
modelViewMatrix : PMatrix;
viewPortSize : TGLSize;
renderDPI : Integer;
materialLibrary : TGLMaterialLibrary;
lightmapLibrary : TGLMaterialLibrary;
fogDisabledCounter : Integer;
lightingDisabledCounter : Integer;
drawState : TDrawState;
objectsSorting : TGLObjectsSorting;
visibilityCulling : TGLVisibilityCulling;
GLStates : TGLStateCache;
rcci : TRenderContextClippingInfo;
sceneAmbientColor : TColorVector;
bufferFaceCull : Boolean;
proxySubObject : Boolean;
ignoreMaterials : Boolean;
ignoreBlendingRequests : Boolean;
amalgamating : Boolean;
end;
PRenderContextInfo = ^TRenderContextInfo;
// TGLColor
//
{: Wraps an OpenGL color. }
TGLColor = class(TGLUpdateAbleObject)
private
{ Private Properties }
FColor : TColorVector;
FPDefaultColor : PColorVector;
procedure SetColorVector(const aColor : TColorVector); overload;
procedure SetColorComponent(index : Integer; value : TGLFloat);
procedure SetAsWinColor(const val : TColor);
function GetAsWinColor : TColor;
protected
{ Protected Properties }
procedure DefineProperties(Filer: TFiler); override;
procedure ReadData(Stream: TStream);
procedure WriteData(Stream: TStream);
function GetHSVA : TVector;
procedure SetHSVA(const hsva : TVector);
public
{ Public Properties }
constructor Create(AOwner : TPersistent); override;
constructor CreateInitialized(AOwner : TPersistent; const color : TColorVector;
changeEvent : TNotifyEvent = nil);
destructor Destroy; override;
procedure NotifyChange(Sender : TObject); override;
procedure Assign(Source : TPersistent); override;
procedure Initialize(const color : TColorVector);
function AsAddress : PGLFloat;
procedure RandomColor;
procedure SetColor(red, green, blue : Single; alpha : Single = 1); overload;
property Color : TColorVector read FColor write SetColorVector;
property AsWinColor : TColor read GetAsWinColor write SetAsWinColor;
property HSVA : TVector read GetHSVA write SetHSVA;
property DefaultColor : TColorVector read FColor;
published
{ Published Properties }
property Red : TGLFloat index 0 read FColor[0] write SetColorComponent stored False;
property Green : TGLFloat index 1 read FColor[1] write SetColorComponent stored False;
property Blue : TGLFloat index 2 read FColor[2] write SetColorComponent stored False;
property Alpha : TGLFloat index 3 read FColor[3] write SetColorComponent stored False;
end;
// TTextureNeededEvent
//
TTextureNeededEvent = procedure (Sender : TObject; var textureFileName : String) of object;
TGLTextureChange = (tcImage, tcParams);
TGLTextureChanges = set of TGLTextureChange;
{: Defines how and if Alpha channel is defined for a texture image.<ul>
<li>tiaDefault : uses the alpha channel in the image if any
<li>tiaAlphaFromIntensity : the alpha channel value is deduced from other
RGB components intensity (the brighter, the more opaque)
<li>tiaSuperBlackTransparent : pixels with a RGB color of (0, 0, 0) are
completely transparent, others are completely opaque
<li>tiaLuminance : the luminance value is calculated for each pixel
and used for RGB and Alpha values
<li>tiaLuminanceSqrt : same as tiaLuminance but with an Sqrt(Luminance)
<li>tiaOpaque : alpha channel is uniformously set to 1.0
<li>tiaTopLeftPointColorTransparent : points of the same color as the
top left point of the bitmap are transparent, others are opaque.
</ul>
}
TGLTextureImageAlpha = (tiaDefault, tiaAlphaFromIntensity,
tiaSuperBlackTransparent, tiaLuminance,
tiaLuminanceSqrt, tiaOpaque,
tiaTopLeftPointColorTransparent,
tiaInverseLuminance, tiaInverseLuminanceSqrt);
// TGLTextureImage
//
{: Base class for texture image data.<p>
Basicly, subclasses are to be considered as different ways of getting
a HBitmap (interfacing the actual source).<br>
SubClasses should be registered using RegisterGLTextureImageClass to allow
proper persistence and editability in the IDE experts. }
TGLTextureImage = class(TGLUpdateAbleObject)
private
FTextureFileName: string;
FOwnerTexture : TGLTexture;
FOnTextureNeeded : TTextureNeededEvent;
protected
function GetHeight: Integer; virtual; abstract;
function GetWidth: Integer; virtual; abstract;
property OnTextureNeeded : TTextureNeededEvent read FOnTextureNeeded write FOnTextureNeeded;
public
{ Public Properties }
constructor Create(AOwner : TPersistent); override;
destructor Destroy; override;
property TextureFileName : string read FTextureFileName write FTextureFileName;
property OwnerTexture : TGLTexture read FOwnerTexture write FOwnerTexture;
procedure NotifyChange(Sender : TObject); override;
{: Request to edit the textureImage.<p>
Returns True if changes have been made.<br>
This method may be invoked from the IDE or at run-time. }
function Edit : Boolean;
{: Save textureImage to file.<p>
This may not save a picture, but for instance, parameters, if the
textureImage is a procedural texture. }
procedure SaveToFile(const fileName : String); dynamic; abstract;
{: Load textureImage from a file.<p>
This may not load a picture, but for instance, parameters, if the
textureImage is a procedural texture.<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -