Class TGLVersion
Unit
Declaration
type TGLVersion = class(TGenericGLVersion)
Description
This item has no description. Showing description inherited from TGenericGLVersion.
OpenGL(ES) library version information. Determined looking at information from glGetString(GL_VERSION), glGetString(GL_VENDOR) and such.
User code should never create instances of this class. Only use the singleton GLVersion, already initialized for you.
Internally, this should be always created by GLInformationInitialize.
Source: base_rendering/castleglversion.pas (line 94).
Hierarchy
- TObject
- TGenericGLVersion
- TGLVersion
Overview
Methods
| Public | constructor Create(const AVersionString, AVendor, ARenderer: string); |
Properties
| Public | property Vendor: string read FVendor; |
| Public | property VendorType: TGLVendorType read FVendorType; |
| Public | property Renderer: string read FRenderer; |
| Public | property Mesa: boolean read FMesa; |
| Public | property VendorMajor: Integer read FVendorMajor; |
| Public | property VendorMinor: Integer read FVendorMinor; |
| Public | property VendorRelease: Integer read FVendorRelease; |
| Public | property Fglrx: boolean read FFglrx; |
| Public | property BuggyFBOCubeMap: boolean read FBuggyFBOCubeMap; |
| Public | property BuggyGenerateCubeMap: boolean read FBuggyGenerateCubeMap; |
| Public | property BuggyVBO: boolean read FBuggyVBO; |
| Public | property BuggyFBOMultiSampling: boolean read FBuggyFBOMultiSampling; |
| Public | property BuggySwapNonStandardViewport: boolean
read FBuggySwapNonStandardViewport; |
| Public | property BuggyDepth32: boolean read FBuggyDepth32; |
| Public | property BuggyGLSLFrontFacing: boolean read FBuggyGLSLFrontFacing; |
| Public | property BuggyGLSLReadVarying: boolean read FBuggyGLSLReadVarying; |
| Public | property BuggyTextureSizeAbove2048: Boolean read FBuggyTextureSizeAbove2048; |
| Public | property BuggyGLSLBumpMappingNumSteps: Boolean read FBuggyGLSLBumpMappingNumSteps; |
Description
Methods
| Public | constructor Create(const AVersionString, AVendor, ARenderer: string); |
|
This item has no description. | |
Properties
| Public | property Vendor: string read FVendor; |
|
Vendor that created the OpenGL implemenetation. This is just glGetString(GL_VENDOR). | |
| Public | property VendorType: TGLVendorType read FVendorType; |
|
Vendor type, derived from Vendor string. | |
| Public | property Renderer: string read FRenderer; |
|
Renderer (GPU model, or software method used for rendering) of the OpenGL. This is just glGetString(GL_RENDERER). | |
| Public | property Mesa: boolean read FMesa; |
|
Are we using Mesa (http://mesa3d.org/). Note that this is detected using VendorVersion, not Vendor. | |
| Public | property VendorMajor: Integer read FVendorMajor; |
|
Vendor-specific drivers version. Right now this is detected for Mesa and Intel. | |
| Public | property VendorMinor: Integer read FVendorMinor; |
|
This item has no description. | |
| Public | property VendorRelease: Integer read FVendorRelease; |
|
This item has no description. | |
| Public | property Fglrx: boolean read FFglrx; |
|
ATI GPU with ATI drivers on Linux. | |
| Public | property BuggyFBOCubeMap: boolean read FBuggyFBOCubeMap; |
|
Buggy generation of cube maps on FBO (Intel(Windows) bug). Symptoms: Parts of the cube map texture are uninitialized (left magenta). Reproducible with castle-model-viewer on demo_models/cube_environment_mapping/cubemap_generated_in_dynamic_world.x3dv . Using separate FBO for each cube map face doesn't help (actually, makes it worse, there's more magenta), so it's not about being unable to do RenderToTexture.SetTexture multiple times. Observed, and this workaround is needed, at least on:
| |
| Public | property BuggyGenerateCubeMap: boolean read FBuggyGenerateCubeMap; |
|
Buggy generation of cube maps at all (Intel(Windows) bug). Symptoms: Parts of the cube map texture are uninitialized (left magenta). Reproducible with castle-model-viewer on demo_models/cube_environment_mapping/cubemap_generated_in_dynamic_world.x3dv . This is worse than BuggyFBOCubeMap, magenta is always seen at positiveX part of the cube map. Observed, and this workaround is needed, at least on:
| |
| Public | property BuggyVBO: boolean read FBuggyVBO; |
|
Buggy VBO (Intel(Windows) bug). | |
| Public | property BuggyFBOMultiSampling: boolean read FBuggyFBOMultiSampling; |
|
Buggy (looks like wireframe) FBO rendering to the multi-sampling texture (ATI(Windows) and Intel(Windows) bug). This makes our screen effects broken on multi-sampled contexts. | |
| Public | property BuggySwapNonStandardViewport: boolean
read FBuggySwapNonStandardViewport; |
|
Buggy swap buffers when glViewport does not contain whole window (ATI(Linux) bug). | |
| Public | property BuggyDepth32: boolean read FBuggyDepth32; |
|
Buggy 32-bit depth buffer, 24-bit depth buffer works Ok (Mesa on ATI (Linux) bug). | |
| Public | property BuggyGLSLFrontFacing: boolean read FBuggyGLSLFrontFacing; |
|
Buggy gl_FrontFacing in GLSL. Observed on Mesa 10.x with OpenGL 3.x (see implemenetation for details where it's observed / not observed). Note that avoiding gl_FrontFacing (that seems to always has inverted value?) is only a part of the workaround for these GPUs. The other is to not render back faces, since it seems that normals are *always* oriented to point to the light (so, if you don't look at gl_FrontFacing, you are lit from *both* sides). So enable backface culling, or just be prepared that backfaces may be incorrectly light. | |
| Public | property BuggyGLSLReadVarying: boolean read FBuggyGLSLReadVarying; |
|
Do not read varying values in vertex shader, treat them as write-only. | |
| Public | property BuggyTextureSizeAbove2048: Boolean read FBuggyTextureSizeAbove2048; |
|
MaxTextureSize above 2048 shall not be trusted. | |
| Public | property BuggyGLSLBumpMappingNumSteps: Boolean read FBuggyGLSLBumpMappingNumSteps; |
|
Buggy num_steps value in bmSteepParallax and bmSteepParallaxShadowing BumpMapping modes on Adreno mobile GPU's (random crashes, sometimes variable in shader has wrong value. Observed on: - Xiaomi Mi 10 Lite (M2002J9G), Snapdragon 765G, Adreno 620: - Motorola Moto G8 (XT2045-2), Snapdragon 665, Adreno 610 - Motorola Moto G7 Plus (XT2081-2), Snapdragon 460, Adreno 610 - Xiaomi Redmi Note 8, Snapdragon 665, Adreno 610 - Xiaomi Redmi Note 7A Snapdragon 439, Adreno 505 More info in comment TGLVersion.Create(). It can be tested by https://github.com/and3md/castle-adreno-tests | |
Generated by PasDoc 0.17.0.snapshot.