[英]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.