Files
XCEngine/docs/api/rhi/opengl/device/get-capabilities.md
2026-03-20 02:35:45 +08:00

58 lines
2.0 KiB
Markdown

# OpenGLDevice::GetCapabilities
```cpp
const RHICapabilities& GetCapabilities() const override
```
获取 OpenGL 设备能力。
## 详细描述
返回设备的硬件能力和特性支持信息。能力信息在 `InitializeWithExistingWindow()` 期间通过查询 OpenGL 获得。
### 查询的能力项
| 能力字段 | 描述 | OpenGL 查询 |
|----------|------|-------------|
| `majorVersion` | OpenGL 主版本 | GL_MAJOR_VERSION |
| `minorVersion` | OpenGL 次版本 | GL_MINOR_VERSION |
| `bSupportsGeometryShaders` | 几何着色器支持 | 始终 true |
| `bSupportsComputeShaders` | 计算着色器支持 | GL_VERSION >= 4.3 |
| `bSupportsTessellation` | 曲面细分支持 | GL_VERSION >= 4.1 |
| `bSupportsExplicitMultiThreading` | 多线程支持 | 始终 false |
| `maxTexture2DSize` | 2D 纹理最大尺寸 | GL_MAX_TEXTURE_SIZE |
| `maxTextureCubeSize` | 立方体贴图最大尺寸 | GL_MAX_CUBE_MAP_TEXTURE_SIZE |
| `maxRenderTargets` | 最大渲染目标数 | GL_MAX_DRAW_BUFFERS |
| `maxColorAttachments` | 最大颜色附件数 | GL_MAX_DRAW_BUFFERS |
| `maxViewports` | 最大视口数 | GL_MAX_VIEWPORTS |
| `maxAnisotropy` | 最大各向异性级别 | GL_MAX_TEXTURE_MAX_ANISOTROPY |
| `maxVertexAttribs` | 最大顶点属性数 | GL_MAX_VERTEX_ATTRIBS |
## 返回值
`const RHICapabilities&` - 设备能力结构的常量引用
## 复杂度
O(1) - 返回内部缓存的能力信息
## 示例
```cpp
const RHICapabilities& caps = device.GetCapabilities();
std::cout << "OpenGL Version: " << caps.majorVersion << "." << caps.minorVersion << std::endl;
std::cout << "Max Texture Size: " << caps.maxTexture2DSize << std::endl;
std::cout << "Max Render Targets: " << caps.maxRenderTargets << std::endl;
if (caps.bSupportsComputeShaders) {
std::cout << "Compute shaders supported" << std::endl;
}
```
## 相关文档
- [OpenGLDevice](device.md) - 类总览
- [RHICapabilities](../../capabilities/capabilities.md) - 能力结构定义
- [GetDeviceInfo](get-device-info.md) - 获取设备信息