# GLSurfaceView：尚未调用 setRenderer

- **ID:** `android/glsurfaceview-renderer-not-set`
- **领域:** android
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 90%

## 根因

使用 GLSurfaceView 时未通过 setRenderer() 设置渲染器，因此没有创建 OpenGL 渲染上下文。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Android 4.0+ | active | — | — |
| OpenGL ES 2.0+ | active | — | — |

## 解决方案

1. ```
   在 onCreate() 或视图初始化后使用有效的 Renderer 实现调用 setRenderer()
   ```
2. ```
   确保 Renderer 类实现 GLSurfaceView.Renderer 并重写 onSurfaceCreated、onDrawFrame、onSurfaceChanged
   ```
3. ```
   如果使用自定义视图，在构造函数中 super() 之后调用 setRenderer()
   ```

## 无效尝试

- **** — requestRender() requires a renderer to be set; without it, the call is ignored and the error persists. (90% 失败率)
- **** — setRenderer() must be called on the main thread; doing so on another thread may cause race conditions or silent failure. (60% 失败率)
- **** — XML declaration alone does not call setRenderer(); it must be done in code after creating the view. (80% 失败率)
