无法在 Maya 插件中编译顶点着色器
Unable to compile vertex shader in Maya Plugin
我正在 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。我试图通过 glut
改变 OpenGL
glutInitDisplayMode(GLUT_3_2_CORE_PROFILE);
但它似乎并没有改变 OpenGL Core Profile。我如何从 Maya 插件中更改核心配置文件,或者我如何知道着色器支持哪个 "xxx" 版本?
The OpenGL version returned is 2.1 ATI-1.42.6. I tried to change the OpenGL via glut
Maya 是否使用 GLUT?不!那么你希望它如何工作呢?
GLUT 是一个独立的库,可以创建 window 和 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 上下文及其活动的可绘制对象的功能。使用它们来存储在您的插件被调用之前哪个上下文+可绘制对象对处于活动状态,然后在返回 Maya 之前将 OpenGL 上下文激活重置为该对。
我正在 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。我试图通过 glut
改变 OpenGLglutInitDisplayMode(GLUT_3_2_CORE_PROFILE);
但它似乎并没有改变 OpenGL Core Profile。我如何从 Maya 插件中更改核心配置文件,或者我如何知道着色器支持哪个 "xxx" 版本?
The OpenGL version returned is 2.1 ATI-1.42.6. I tried to change the OpenGL via glut
Maya 是否使用 GLUT?不!那么你希望它如何工作呢?
GLUT 是一个独立的库,可以创建 window 和 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 上下文及其活动的可绘制对象的功能。使用它们来存储在您的插件被调用之前哪个上下文+可绘制对象对处于活动状态,然后在返回 Maya 之前将 OpenGL 上下文激活重置为该对。