gpt4 book ai didi

c++ - 为什么 OSX Mavericks 不编译我的 GLSL 着色器?

转载 作者:搜寻专家 更新时间:2023-10-31 01:46:12 26 4
gpt4 key购买 nike

这个着色器程序编译得很好

#version 120
void main()
{
gl_FrontColor = gl_Color;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}

但是当我尝试切换到版本 330 或 400 时,它会抛出“不支持”错误

#version 400
void main()
{
gl_FrontColor = gl_Color;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}

我需要使用“输入”和“输出”功能来配合我用来学习 OpenGL 的书,而最新的 Mac 应该最多支持 4.1。我什至下载了苹果图形开发工具来使用 OpenGL Shader Builder 寻求帮助,它也不会编译超过 1.2 的任何东西。

最佳答案

我假设您正在使用 NSOpenGLView。在将 OpenGL 配置文件配置为使用 3.2 内核之前,我无法编译任何 > V1.20 的着色器。 NSOpenGLView(或其子类,如果您对其进行子类化)的 pixelFormat 属性必须设置正确的属性。

如果您正在继承 NSOpenGLView 并将其添加到 Interface Builder 中的 View 中,您可以将以下代码添加到子类的 -awakeFromNib 方法中:

- (void) awakeFromNib
{
NSOpenGLPixelFormatAttribute attributes [] = {
NSOpenGLPFADepthSize, (NSOpenGLPixelFormatAttribute)24,
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
(NSOpenGLPixelFormatAttribute)0
};

NSOpenGLPixelFormat *pf = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes];
[self setPixelFormat:pf];
}

如果您以编程方式创建 View ,还有其他方法可以设置像素格式(例如 -initWithFrame:pixelFormat:)。

另请参阅 Apple 的 GLEssentials示例代码,其中发生了相当多的事情,但它确实使用了更新版本的 OpenGL,并且包含上面的确切代码片段。

关于c++ - 为什么 OSX Mavericks 不编译我的 GLSL 着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20980190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com