我正在尝试使用一个简单的几何着色器,但是当在带有GMA X3100的笔记本电脑上的Shader Builder中运行时,它会退回并使用软件渲染。根据{{3}},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();
}
答案 0 :(得分:2)
从你链接到它的文档肯定会出现它应该得到支持。
你可以尝试
int hasGEOM = isExtensionSupported("EXT_geometry_shader4");
如果返回是肯定的,则可能还有另一个问题,即停止工作。
另外根据GLSL规范(1.20.8)“必须首先启用任何扩展行为。 使用#extension指令“
声明控制编译器关于扩展的行为的指令我没有看到你在代码中使用此指令,所以我可以建议
#extension GL_EXT_geometry_shader4 : enable
在着色器代码块的顶部。
答案 1 :(得分:1)
我发现这个OpenGL Extensions Viewer工具确实有助于追踪这些问题。它肯定会让你确认Apple的说法。也就是说,wikipedia states官方GLSL对几何着色器的支持在技术上是一个OpenGL 3.2功能。
有人知道EXT_geometry_shader4实现是否支持GLSL语法,还是需要某些硬件或驱动程序特定格式?
答案 2 :(得分:0)
有趣的是,我听说英特尔对这些集成GPU的兼容性声明有时被夸大或只是错误。显然X3100只支持OpenGL 1.4及以下版本(或者我已经听过了,因此我无法确认这一点)。
答案 3 :(得分:-2)
在我的惠普笔记本电脑上,英特尔x3100使用Windows 7 x64驱动程序(v8.15.10.1930(9-23-2009))直接从英特尔网站上,扩展名“EXT_geometry_shader4”(或其任何变体)不是支持的。我已经以编程方式确认了这一点并使用工具"GPU Caps Viewer"(其中列出了检测到的受支持扩展,以及其他有用的内容)。由于Windows往往是来自任何供应商的驱动程序开发的主要主题,因此OSX驱动程序不太可能更好,实际上可能更少支持扩展。