5

我正在尝试使用简单的几何着色器,但是当在带有 GMA X3100 的笔记本电脑上的 Shader Builder 中运行时,它会退回并使用软件渲染。根据这份文件,GMA X3100 确实支持EXT_geometry_shader4.

输入为POINTS,输出为LINE_STRIP

让它在 GPU 上运行需要什么(如果可能的话)

uniform vec2 offset;

void main()
{
    gl_Position = gl_PositionIn[0];
    EmitVertex();
    gl_Position = gl_PositionIn[0] + vec4(offset.x,offset.y,0,0);
    EmitVertex();
    EndPrimitive();
}
4

4 回答 4

2

从您链接到它的文档看来,它肯定应该受到支持。

你可以试试

int hasGEOM = isExtensionSupported("EXT_geometry_shader4");

如果它以肯定的方式返回,您可能会遇到另一个问题来阻止它工作。

同样根据 GLSL 规范(1.20.8)“必须首先启用任何扩展行为。使用 #extension 指令声明控制编译器关于扩展的行为的指令”

我没有看到您在代码中使用此指令,所以我可以建议

#extension GL_EXT_geometry_shader4 : enable

在着色器代码块的顶部。

于 2010-10-22T01:32:03.963 回答
1

我发现这个OpenGL Extensions Viewer工具对追踪这类问题非常有帮助。它肯定会让你确认苹果的说法。也就是说,维基百科声明官方 GLSL 对几何着色器的支持在技术上是 OpenGL 3.2 功能。

有谁知道EXT_geometry_shader4实现是否支持 GLSL 语法,或者它是否需要一些硬件或驱动程序特定的格式?

于 2010-04-15T02:51:39.300 回答
0

有趣的是,我听说英特尔关于这些集成 GPU 的兼容性声明有时被夸大了或只是错误的。显然,X3100 仅支持 OpenGL 1.4 及更低版本(或者我听说,对此持保留态度,因为我无法确认这一点)。

于 2010-06-15T22:42:37.353 回答
-2

在我的 HP 笔记本电脑上,使用直接来自英特尔网站的 Windows 7 x64 驱动程序 (v8.15.10.1930 (9-23-2009)) 的英特尔 x3100,不支持扩展“EXT_geometry_shader4”(或其任何变体)。我已经以编程方式确认了这一点,并使用了“GPU Caps Viewer”工具(其中列出了检测到的支持的扩展,以及其他有用的东西)。由于 Windows 往往是任何供应商的驱动程序开发的主要主题,因此 OSX 驱动程序不太可能更好,实际上可能支持的扩展更少。

于 2012-07-19T06:04:46.940 回答