无法在Maya插件中编译顶点着色器

Unable to compile vertex shader in Maya Plugin

本文关键字:顶点 编译 Maya 插件      更新时间:2023-10-16

我正在Maya/MacOS上编写一个插件,该插件正在为OpenGL:编译顶点着色器

    const char* vscode =
    {
        "#version 150n"
        ...
    }

然而,在Maya中执行代码会给我

ERROR: 0:1: '' :  version '150' is not supported

返回的OpenGL版本为2.1 ATI-1.42.6。我试图通过过量更改OpenGL

glutInitDisplayMode(GLUT_3_2_CORE_PROFILE);

但它似乎并没有改变OpenGL核心配置文件。如何在Maya插件中更改核心配置文件,或者如何知道着色器中支持哪个"xxx"版本?

返回的OpenGL版本为2.1 ATI-1.42.6。我试图通过过量更改OpenGL

Maya是否使用GLUT?不那么,你怎么会期望这样做呢?

GLUT是一个独立的库,用于创建窗口和OpenGL上下文GLUT不是OpenGL的一部分并且GLUT不能影响不使用GLUT的程序的OpenGL上下文管理

Maya在内部执行OpenGL上下文管理,当您的插件被调用时,OpenGL上下文已经创建,并且特定上下文的版本配置文件设置为stone。

但是,您可以创建一个自己的OpenGL上下文,仅用于插件,并将其与Maya创建的OpenGL上下文连接(OpenGL上下文共享)。无论如何,这样做都是可取的,因为这将插件使用的OpenGL与Maya使用的OpenGL状态分离开来。

为此,您必须使用系统级OpenGL上下文管理API。所以没有GLUT,没有GLFW,没有SMFL或其他辅助库。别担心,这并不太难。关于连接Maya的OpenGL上下文,每个OpenGL上下文管理API都有查询当前活动的OpenGL上下文及其活动的绘图的功能。使用这些功能可以存储在调用插件之前哪个上下文+绘图对是活动的,然后在返回Maya之前将OpenGL上下文激活重置为该对。