diff --git a/engine/src/RHI/OpenGL/OpenGLDevice.cpp b/engine/src/RHI/OpenGL/OpenGLDevice.cpp index 02065211..f00980b7 100644 --- a/engine/src/RHI/OpenGL/OpenGLDevice.cpp +++ b/engine/src/RHI/OpenGL/OpenGLDevice.cpp @@ -98,6 +98,38 @@ bool OpenGLDevice::InitializeWithExistingWindow(GLFWwindow* window) { m_deviceInfo.majorVersion = static_cast(majorVersion); m_deviceInfo.minorVersion = static_cast(minorVersion); + m_capabilities.majorVersion = majorVersion; + m_capabilities.minorVersion = minorVersion; + m_capabilities.bSupportsGeometryShaders = true; + m_capabilities.bSupportsComputeShaders = GLVersion.major >= 4 && GLVersion.minor >= 3; + m_capabilities.bSupportsTessellation = GLVersion.major >= 4 && GLVersion.minor >= 1; + m_capabilities.bSupportsExplicitMultiThreading = false; + + GLint maxTexSize = 0; + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); + m_capabilities.maxTexture2DSize = static_cast(maxTexSize); + + GLint maxCubeSize = 0; + glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &maxCubeSize); + m_capabilities.maxTextureCubeSize = static_cast(maxCubeSize); + + GLint maxRenderTargets = 0; + glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxRenderTargets); + m_capabilities.maxRenderTargets = static_cast(maxRenderTargets); + m_capabilities.maxColorAttachments = static_cast(maxRenderTargets); + + GLint maxViewports = 0; + glGetIntegerv(GL_MAX_VIEWPORTS, &maxViewports); + m_capabilities.maxViewports = static_cast(maxViewports); + + GLint maxAnisotropy = 0; + glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY, &maxAnisotropy); + m_capabilities.maxAnisotropy = static_cast(maxAnisotropy); + + GLint maxAttribs = 0; + glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxAttribs); + m_capabilities.maxVertexAttribs = static_cast(maxAttribs); + m_initialized = true; return true; }