为什么 OSX Mavericks 无法编译我的 GLSL 着色器?
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();
}
我需要使用"in"和"out"功能来配合我用来学习OpenGL的书,最新的Mac应该支持高达4.1。 我什至下载了苹果图形开发人员工具以使用OpenGL Shader Builder寻求帮助,它也不会编译超过1.2的任何内容。
我假设您正在使用NSOpenGLView
. 在我将 OpenGL 配置文件配置为使用 3.2 内核之前,我无法编译任何> V1.20 着色器。 必须使用正确的属性设置NSOpenGLView
(或其子类,如果要对其进行子类化)上的 pixelFormat
属性。
如果要对NSOpenGLView
进行子类化,并且已将其添加到接口生成器中的视图中,则可以将以下代码添加到子类的-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,并且其中包含了上面的确切代码片段。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 从固定函数迁移到 GLSL OpenGL:我应该如何修改我的视图(lookAt)矩阵和透视矩阵?
- 为什么我的GLSL着色器失败汇编而没有错误消息
- 为什么我的 GLSL 转换没有渲染
- 为什么 OSX Mavericks 无法编译我的 GLSL 着色器?
- 我的glsl着色器加载代码有什么问题吗
- GLSL 4.5:为什么我的 "in" 颜色变量未被 glGetAttribLocation 找到
- 我的GLSL着色器对象/包装器是否应该封装加载/设置VertexArrayObject