OS X OpenGL 3.2不包含glBindFragDataLocation?

时间:2013-09-28 06:27:19

标签: macos opengl glsl opengl-3

我正在尝试在OS X上创建一个简单的OpenGL 3.2核心配置文件应用程序。我通过Macports使用SDL2,但我怀疑这很重要。我的理解是我应该使用GLSL #version 150,我的琐碎片段着色器目前看起来像这样:

#version 150

out vec4 outputF;

void main() {
    outputF = vec4(1.0, 0.0, 0.0, 1.0);
}

现在我相信我需要告诉OpenGL片段颜色是通过outputF函数在glBindFragDataLocation中设置的。问题是它似乎没有在任何地方声明。这个功能在3.2核心配置文件中是不可用的(与我的搜索相反),还是我错过了头文件,或者是什么?

1 个答案:

答案 0 :(得分:4)

如果您使用的是OS X,则应包含GL 3.2(核心)配置文件的<OpenGL/gl3.h>标题。作为OpenGL框架的一部分,可以在以下网址找到:

/System/Library/Frameworks/OpenGL.framework/Headers/gl3.h

如果您要将片段写入默认帧缓冲区,则不需要此调用。也就是说,outputF将被绑定到&#39;颜色编号&#39;默认情况下为(0)。 IIRC,您可以随意调用此out变量,只要它不以保留的gl_前缀开头。

我还没有尝试过SDL2 - 但你可能想先添加#define GL3_PROTOTYPES,例如,

#define GL3_PROTOTYPES

#if defined (__APPLE_CC__)
#include <OpenGL/gl3.h>
#else
#include <GL/glcorearb.h> // assert GL 3.2 core profile available...
#endif