|
|
|
@ -140,6 +140,26 @@ RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_, |
|
|
|
} |
|
|
|
AddTelemetryFields(); |
|
|
|
InitOpenGLObjects(); |
|
|
|
|
|
|
|
// Initialize default attributes to match hardware's disabled attributes
|
|
|
|
GLint max_attribs{}; |
|
|
|
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &max_attribs); |
|
|
|
for (GLint attrib = 0; attrib < max_attribs; ++attrib) { |
|
|
|
glVertexAttrib4f(attrib, 0.0f, 0.0f, 0.0f, 0.0f); |
|
|
|
} |
|
|
|
// Enable seamless cubemaps when per texture parameters are not available
|
|
|
|
if (!GLAD_GL_ARB_seamless_cubemap_per_texture && !GLAD_GL_AMD_seamless_cubemap_per_texture) { |
|
|
|
glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS); |
|
|
|
} |
|
|
|
// Enable unified vertex attributes and query vertex buffer address when the driver supports it
|
|
|
|
if (device.HasVertexBufferUnifiedMemory()) { |
|
|
|
glEnableClientState(GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV); |
|
|
|
glEnableClientState(GL_ELEMENT_ARRAY_UNIFIED_NV); |
|
|
|
|
|
|
|
glMakeNamedBufferResidentNV(vertex_buffer.handle, GL_READ_ONLY); |
|
|
|
glGetNamedBufferParameterui64vNV(vertex_buffer.handle, GL_BUFFER_GPU_ADDRESS_NV, |
|
|
|
&vertex_buffer_address); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
RendererOpenGL::~RendererOpenGL() = default; |
|
|
|
@ -256,21 +276,6 @@ void RendererOpenGL::InitOpenGLObjects() { |
|
|
|
|
|
|
|
// Clear screen to black
|
|
|
|
LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture); |
|
|
|
|
|
|
|
// Enable seamless cubemaps when per texture parameters are not available
|
|
|
|
if (!GLAD_GL_ARB_seamless_cubemap_per_texture && !GLAD_GL_AMD_seamless_cubemap_per_texture) { |
|
|
|
glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS); |
|
|
|
} |
|
|
|
|
|
|
|
// Enable unified vertex attributes and query vertex buffer address when the driver supports it
|
|
|
|
if (device.HasVertexBufferUnifiedMemory()) { |
|
|
|
glEnableClientState(GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV); |
|
|
|
glEnableClientState(GL_ELEMENT_ARRAY_UNIFIED_NV); |
|
|
|
|
|
|
|
glMakeNamedBufferResidentNV(vertex_buffer.handle, GL_READ_ONLY); |
|
|
|
glGetNamedBufferParameterui64vNV(vertex_buffer.handle, GL_BUFFER_GPU_ADDRESS_NV, |
|
|
|
&vertex_buffer_address); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void RendererOpenGL::AddTelemetryFields() { |
|
|
|
|