Class TGLVersion

Unit

Declaration

type TGLVersion = class(TGenericGLVersion)

Description

No description available, ancestor TGenericGLVersion description follows

OpenGL libraries (core OpenGL or GLU) version information.

As obtained from glGetString(GL_VERSION) or gluGetString(GLU_VERSION), also by glGetString(GL_VENDOR).

This is usually created by CastleGLUtils.GLInformationInitialize.

Hierarchy

Overview

Methods

Public constructor Create(const VersionString, 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 BuggyGenerateMipmap: boolean read FBuggyGenerateMipmap;
Public property BuggyFBOCubeMap: boolean read FBuggyFBOCubeMap;
Public property BuggyGenerateCubeMap: boolean read FBuggyGenerateCubeMap;
Public property BuggyLightModelTwoSide: boolean read FBuggyLightModelTwoSide;
Public property BuggyLightModelTwoSideMessage: string read FBuggyLightModelTwoSideMessage;
Public property BuggyVBO: boolean read FBuggyVBO;
Public property BuggyShaderShadowMap: boolean read FBuggyShaderShadowMap;
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;

Description

Methods

Public constructor Create(const VersionString, AVendor, ARenderer: string);
 

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/). Detected using VendorSpecific information.

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;
 
Public property VendorRelease: Integer read FVendorRelease;
 
Public property Fglrx: boolean read FFglrx;

ATI GPU with ATI drivers on Linux.

Public property BuggyGenerateMipmap: boolean read FBuggyGenerateMipmap;

Buggy glGenerateMipmapEXT (Mesa and Intel(Windows) bug).

This was observed with software (no direct) rendering with 7.0.2 (segfaults) and 7.2.? (makes X crashing; sweet). With Mesa 7.5.1 (but tested only with radeon and radeonhd, so possibly it's not really related to Mesa version! Reports welcome) no problems.

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 view3dscene 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:

  • Version string: 2.1.0 - Build 8.15.10.2104

  • Vendor: Intel

  • Renderer: Intel(R) HD Graphics

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 view3dscene on demo_models/cube_environment_mapping/cubemap_generated_in_dynamic_world.x3dv . This is worse then BuggyFBOCubeMap, magenta is always seen at positiveX part of the cube map.

Observed, and this workaround is needed, at least on:

  • Version string: 3.3.0 - Build 8.15.10.2778

  • Vendor: Intel

  • Renderer: Intel(R) HD Graphics 4000

Public property BuggyLightModelTwoSide: boolean read FBuggyLightModelTwoSide;

Buggy GL_LIGHT_MODEL_TWO_SIDE = GL_TRUE behavior (ATI(Linux) bug). See [https://sourceforge.net/apps/phpbb/vrmlengine/viewtopic.php?f=3&t=14]

Public property BuggyLightModelTwoSideMessage: string read FBuggyLightModelTwoSideMessage;
 
Public property BuggyVBO: boolean read FBuggyVBO;

Buggy VBO (Intel(Windows) bug).

Public property BuggyShaderShadowMap: boolean read FBuggyShaderShadowMap;

Buggy shadow2DProj in some situations (ATI(Linux) 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.


Generated by PasDoc 0.15.0.