Mac OS X上的GLSL版本130导致错误

GLSL version 130 on Mac OS X causes error

本文关键字:错误 版本 GLSL OS 上的 Mac      更新时间:2023-10-16

我一直在使用Mac OS X浏览OpenGL Superbible第五版的代码,但偶然发现了一个问题。在我的顶点着色器中,我包含了版本号#version 130。但是,它无法编译,出现错误ERROR: 0:1: '' : version '130' is not supported

信息:我在Mac操作系统10.8.5版上使用Xcode,带有Intel HD Graphics 3000。它应该支持OpenGL 3.0版本,与GLSL 1.30版本相对应。

除非您选择明确要求核心配置文件的像素格式,否则您将获得OpenGL 2.1实现。有关如何做到这一点的更多详细信息,请参阅我对另一个问题的回答;这是对OS X 10.7中引入的CGL/NSOpenGL API的一个新更改,因此一些较旧的书籍可能不会对其进行记录。

GPU支持的内容和实际获得的内容之间存在很大差异。在许多其他平台上,无需更改与OpenGL 3.2一起引入的窗口系统API,您就可以获得OpenGL 3.2+实现的所有功能OpenGL 2.1及更早版本的遗留功能(这被称为兼容性配置文件)。

OS X不同,它不支持兼容性配置文件。您可以使用传统的OpenGL 2.1实现,也可以使用核心3.2(在OS X 10.9中为3.3/4.1)实现,但您永远无法混合使用这两者的功能。此外,除非您修改代码以要求核心配置文件,否则默认情况下您将被限制为OpenGL 2.1。

在macOS中,中支持的OpenGL版本链接到系统版本。自OS X 10.9(Mavericks)以来,最高级的支持版本是OpenGL 4.1。

此外,OpenGL现在已被弃用,因为macOS 10.14(Mojave),您必须使用Metal框架或MoltenVK(OS X的Vulkan包装器)。Vulkan是OpenGL的继承者。

有用的链接:

https://developer.apple.com/videos/play/wwdc2018/604/

在OSX Big Sur 上使用OpenGL 4.x进行开发