OpenTK启用Texture2D时报InvalidEnum错误,是否为默认开启状态?
关于OpenTK中调用GL.Enable(EnableCap.Texture2D)返回InvalidEnum错误的说明
- 报错的核心原因是OpenGL核心模式(Core Profile)已完全移除
EnableCap.Texture2D枚举,该枚举仅在OpenGL兼容模式(Compatibility Profile)、或OpenGL 3.0及更早的固定管线版本中支持。 - OpenTK不会默认启用固定管线相关特性,报错和上下文创建配置直接相关:
- 如果创建OpenGL上下文时选择的是默认的核心模式,就不支持
GL.Enable(EnableCap.Texture2D)调用,执行后必然返回ErrorCode.InvalidEnum - 如果你需要兼容旧的固定管线逻辑,需要在创建GameWindow/GLContext时显式指定使用兼容模式,且OpenGL版本选择3.0及以下
- 如果创建OpenGL上下文时选择的是默认的核心模式,就不支持
- 现代OpenGL使用纹理无需全局启用:
现代OpenGL已废弃全局2D纹理开关,你只需要在渲染时将纹理对象绑定到对应着色器纹理单元即可正常使用,不需要执行全局的GL.Enable指令操作纹理能力。
内容的提问来源于stack exchange,提问作者Lyx52
相关产品推荐
相关产品推荐

