58 lines
2.0 KiB
Markdown
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) - 获取设备信息
|