OpenGL几何着色器编译错误OSX-Mavericks

时间:2014-06-08 14:57:09

标签: opengl glsl osx-mavericks geometry-shader

我开始使用一个可以绘制单个GL_POINT的OpenGL程序(使用顶点和片段着色器)。然后我附加了一个简单的几何着色器,它输出两个点给定一个点作为输入:

#version 400

layout(points) in;
layout(points, max_vertices = 2) out;

void main() {

    gl_Position = gl_in[0].gl_Position;
    EmitVertex();

    gl_Position = gl_in[0].gl_Position + vec4(0.1, 0, 0, 1);
    EmitVertex();


    EndPrimitive();
}

当我运行程序时,我从GL得到以下编译错误:

Error Compiling Shader: ERROR: 0:4: Invalid use of layout 'points'
ERROR: 0:5: Invalid use of layout 'points'
ERROR: 0:9: Use of undeclared identifier 'gl_Position'
ERROR: 0:9: Use of undeclared identifier 'gl_in'
ERROR: 0:10: Call to undeclared function 'EmitVertex'
ERROR: 0:12: Use of undeclared identifier 'gl_Position'
ERROR: 0:12: Use of undeclared identifier 'gl_in'
ERROR: 0:13: Call to undeclared function 'EmitVertex'
ERROR: 0:16: Call to undeclared function 'EndPrimitive'

我的系统规格:

  

Mac OSX 10.9,Nvidia Geforce 750M,OpenGL 4.1驱动程序

我还尝试在几何着色器中定义以下内容:

#extension GL_EXT_geometry_shader4: enable

但是我的驱动程序不支持扩展名。不应该这样做,因为几何着色器是3.2以来的核心分离(来源:https://www.opengl.org/wiki/Geometry_shader#See_also

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先,不要使用#extension GL_EXT_geometry_shader4: enable

GLSL 4.00中的几何着色器 核心 。 EXT扩展实际上有一些不同的行为,例如gl_VerticesIn而不是gl_in.length ()来确定输入的大小以及使用程序参数来设置输入/输出基元类型而不是布局限定符。 Apple的核心配置文件实现甚至不支持该扩展。

其次,您列出的所有错误都指向一件事......

您正在尝试创建 片段着色器 。致电GL_GEOMETRY_SHADER时,请务必使用glCreateShader (...)

相关问题