繁体   English   中英

为什么OSX Mavericks不编译我的GLSL Shader?

[英]Why won't OSX Mavericks compile my GLSL Shader?

此着色器程序可以完美编译

#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着色器。 pixelFormat的财产NSOpenGLView (或它的子类,如果你是它的子类),必须用正确的属性进行设置。

如果要子类化NSOpenGLView并将其添加到Interface Builder中的视图中,则可以将以下代码添加到子类的-awakeFromNib方法中:

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

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

如果以编程方式创建视图,则还有其他方法可以设置像素格式(例如-initWithFrame:pixelFormat:

另外,请参阅Apple的GLEssentials示例代码,其中有很多内容,但是它确实利用了最新版本的OpenGL,并且上面有确切的代码片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM