|
@@ -140,6 +140,26 @@ RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_,
|
|
|
}
|
|
}
|
|
|
AddTelemetryFields();
|
|
AddTelemetryFields();
|
|
|
InitOpenGLObjects();
|
|
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;
|
|
RendererOpenGL::~RendererOpenGL() = default;
|
|
@@ -256,21 +276,6 @@ void RendererOpenGL::InitOpenGLObjects() {
|
|
|
|
|
|
|
|
// Clear screen to black
|
|
// Clear screen to black
|
|
|
LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture);
|
|
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() {
|
|
void RendererOpenGL::AddTelemetryFields() {
|