我正在尝试在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核心配置文件中是不可用的(与我的搜索相反),还是我错过了头文件,或者是什么?
答案 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