我在Maya / MacOS上编写一个插件,正在为OpenGL编译顶点着色器:
const char* vscode =
{
"#version 150\n"
...
}
但是,在Maya中执行代码会给我
ERROR: 0:1: '' : version '150' is not supported
返回的OpenGL版本是2.1 ATI-1.42.6。我试图通过过剩改变OpenGL
glutInitDisplayMode(GLUT_3_2_CORE_PROFILE);
但它似乎没有改变OpenGL Core Profile。如何在Maya插件中更改核心配置文件,或者如何知道着色器中支持哪个“xxx”版本?
答案 0 :(得分:2)
返回的OpenGL版本是2.1 ATI-1.42.6。我试图通过过剩改变OpenGL
Maya是否使用GLUT?没有!那你怎么期望这个呢?
GLUT是一个独立的库,可以创建窗口和OpenGL上下文。 GLUT不是OpenGL的一部分 和 GLUT不能影响不使用GLUT 的程序的OpenGL上下文管理。
Maya在内部进行OpenGL上下文管理,当你的插件被调用时,已经创建了一个OpenGL上下文,并且的特定上下文的版本配置文件已经确定。
但你可以做的是你可以创建一个非常自己的OpenGL上下文,只为你的插件并将它与Maya创建的OpenGL上下文(OpenGL上下文共享)连接起来。无论如何,这样做是可取的,因为这将您的插件使用的OpenGL与Maya使用的OpenGL状态分开。
您必须使用系统级OpenGL上下文管理API。所以没有GLUT,没有GLFW,没有SMFL或其他帮助库。别担心,这并不难做到。关于与Maya的OpenGL上下文的连接,每个OpenGL上下文管理API都具有查询当前活动的OpenGL上下文及其活动的drawable的功能。在调用插件之前,使用它们存储哪些上下文+可绘制对是活动的,然后在返回Maya之前将OpenGL上下文激活重置为该对。