macos - GLSL几何着色器是否在OSX下的GMA X3100上工作

标签 macos opengl glsl geometry-shader

我正在尝试使用简单的几何着色器,但是当在带有 GMA X3100 的笔记本电脑上的 Shader Builder 中运行时,它会退回并使用软件渲染。根据this document 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();
}

最佳答案

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

你可以试试
int hasGEOM = isExtensionSupported("EXT_geometry_shader4");
如果它以肯定的方式返回,您可能会遇到另一个问题来阻止它工作。

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

我没有看到您在代码中使用此指令,所以我可以建议
#extension GL_EXT_geometry_shader4 : enable
在着色器代码块的顶部。

关于macos - GLSL几何着色器是否在OSX下的GMA X3100上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535617/

相关文章:

swift - NSOperationQueue 在计算任务上的性能比单线程差

java - 重新启动 Java Swing 应用程序

macos - 我可以知道 NSTextField 文本部分的确切矩形吗?

c++ - 在 OpenGL 中使用 for 循环创建数组

glsl - 如何使用 Open GL ES 2.0 或 WebGL 创建雾?

macos - OSX 终端在没有提示的情况下从命令行关闭当前选项卡?

c++ - 问题传递数组作为参数

opengl - 如何从 OpenGL 顶点缓冲区对象中的坐标中分割值

c++ - 纹理显示为纯黑色,除非我将无效值传递给纹理统一位置

c++ - OpenGL GLSL - 投影矩阵不工作