UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
OpenGLDevice.cpp File Reference
#include "CoreMinimal.h"
#include "Misc/CoreDelegates.h"
#include "Misc/CommandLine.h"
#include "Misc/ScopeLock.h"
#include "Stats/Stats.h"
#include "Serialization/MemoryWriter.h"
#include "Misc/ConfigCacheIni.h"
#include "HAL/IConsoleManager.h"
#include "RHI.h"
#include "DataDrivenShaderPlatformInfo.h"
#include "Containers/List.h"
#include "RenderResource.h"
#include "ShaderCore.h"
#include "Shader.h"
#include "RenderUtils.h"
#include "OpenGLDrv.h"
#include "OpenGLDrvPrivate.h"
#include "SceneUtils.h"
#include "GlobalShader.h"
#include "HardwareInfo.h"
#include "OpenGLProgramBinaryFileCache.h"

Macros

#define GL_STEREO   0x0C33
 
#define LOG_GL_STRING(StringEnum)   UE_LOG(LogRHI, Log, TEXT(" ") ## TEXT(#StringEnum) ## TEXT(": %s"), ANSI_TO_TCHAR((const ANSICHAR*)glGetString(StringEnum)))
 
#define LOG_AND_GET_GL_INT_TEMP(IntEnum, Default)   GLint Value_##IntEnum = Default; if (IntEnum) {glGetIntegerv(IntEnum, &Value_##IntEnum); glGetError();} else {Value_##IntEnum = Default;} UE_LOG(LogRHI, Log, TEXT(" ") ## TEXT(#IntEnum) ## TEXT(": %d"), Value_##IntEnum)
 

Enumerations

enum class  EOpenGLFormatCapabilities : uint32 {
  None = 0 , Texture = 1ull << 0 , Render = 1ull << 1 , Filterable = 1ull << 2 ,
  Image = 1ull << 3 , DepthStencil = 1ull << 4
}
 

Functions

void BeginFrame_UniformBufferPoolCleanup ()
 
void BeginFrame_VertexBufferCleanup ()
 
 ENUM_CLASS_FLAGS (EOpenGLFormatCapabilities)
 
void InitDebugContext ()
 
void ApplyExtensionsOverrides (FString &ExtensionsString)
 
void DestroyShadersAndPrograms ()
 

Variables

GLint GMaxOpenGLColorSamples
 
GLint GMaxOpenGLDepthSamples
 
GLint GMaxOpenGLIntegerSamples
 
GLint GMaxOpenGLTextureFilterAnisotropic
 
GLint GMaxOpenGLDrawBuffers
 
FOpenGLTextureFormat GOpenGLTextureFormats [PF_MAX]
 
bool GUseEmulatedUniformBuffers
 
bool GDisableOpenGLDebugOutput = false
 
TAutoConsoleVariable< FString > CVarOpenGLStripExtensions (TEXT("r.OpenGL.StripExtensions"), TEXT(""), TEXT("List of comma separated OpenGL extensions to strip from a driver reported extensions string"), ECVF_ReadOnly)
 
TAutoConsoleVariable< FString > CVarOpenGLAddExtensions (TEXT("r.OpenGL.AddExtensions"), TEXT(""), TEXT("List of comma separated OpenGL extensions to add to a driver reported extensions string"), ECVF_ReadOnly)
 

Macro Definition Documentation

◆ GL_STEREO

#define GL_STEREO   0x0C33

◆ LOG_AND_GET_GL_INT_TEMP

#define LOG_AND_GET_GL_INT_TEMP (   IntEnum,
  Default 
)    GLint Value_##IntEnum = Default; if (IntEnum) {glGetIntegerv(IntEnum, &Value_##IntEnum); glGetError();} else {Value_##IntEnum = Default;} UE_LOG(LogRHI, Log, TEXT(" ") ## TEXT(#IntEnum) ## TEXT(": %d"), Value_##IntEnum)

◆ LOG_GL_STRING

#define LOG_GL_STRING (   StringEnum)    UE_LOG(LogRHI, Log, TEXT(" ") ## TEXT(#StringEnum) ## TEXT(": %s"), ANSI_TO_TCHAR((const ANSICHAR*)glGetString(StringEnum)))

Enumeration Type Documentation

◆ EOpenGLFormatCapabilities

Enumerator
None 
Texture 
Render 
Filterable 
Image 
DepthStencil 

Function Documentation

◆ ApplyExtensionsOverrides()

void ApplyExtensionsOverrides ( FString &  ExtensionsString)

◆ BeginFrame_UniformBufferPoolCleanup()

void BeginFrame_UniformBufferPoolCleanup ( )
extern

◆ BeginFrame_VertexBufferCleanup()

void BeginFrame_VertexBufferCleanup ( )
extern

◆ DestroyShadersAndPrograms()

void DestroyShadersAndPrograms ( )
extern

◆ ENUM_CLASS_FLAGS()

ENUM_CLASS_FLAGS ( EOpenGLFormatCapabilities  )

◆ InitDebugContext()

void InitDebugContext ( )

Variable Documentation

◆ CVarOpenGLAddExtensions

TAutoConsoleVariable< FString > CVarOpenGLAddExtensions(TEXT("r.OpenGL.AddExtensions"), TEXT(""), TEXT("List of comma separated OpenGL extensions to add to a driver reported extensions string"), ECVF_ReadOnly) ( TEXT("r.OpenGL.AddExtensions")  ,
TEXT("")  ,
TEXT("List of comma separated OpenGL extensions to add to a driver reported extensions string" ,
ECVF_ReadOnly   
)

◆ CVarOpenGLStripExtensions

TAutoConsoleVariable< FString > CVarOpenGLStripExtensions(TEXT("r.OpenGL.StripExtensions"), TEXT(""), TEXT("List of comma separated OpenGL extensions to strip from a driver reported extensions string"), ECVF_ReadOnly) ( TEXT("r.OpenGL.StripExtensions")  ,
TEXT("")  ,
TEXT("List of comma separated OpenGL extensions to strip from a driver reported extensions string" ,
ECVF_ReadOnly   
)

◆ GDisableOpenGLDebugOutput

bool GDisableOpenGLDebugOutput = false

◆ GMaxOpenGLColorSamples

GLint GMaxOpenGLColorSamples
extern

Caching it here, to avoid getting it every time we create a texture. 0 is no multisampling.

◆ GMaxOpenGLDepthSamples

GLint GMaxOpenGLDepthSamples
extern

◆ GMaxOpenGLDrawBuffers

GLint GMaxOpenGLDrawBuffers
extern

◆ GMaxOpenGLIntegerSamples

GLint GMaxOpenGLIntegerSamples
extern

◆ GMaxOpenGLTextureFilterAnisotropic

GLint GMaxOpenGLTextureFilterAnisotropic
extern

◆ GOpenGLTextureFormats

FOpenGLTextureFormat GOpenGLTextureFormats[PF_MAX]

OpenGL texture format table.

◆ GUseEmulatedUniformBuffers

bool GUseEmulatedUniformBuffers

true if we're not using UBOs.