2013-05-09 82 views
1

显然细分着色器的OpenGL 4镶嵌能够OSX 10.8.3下运行:在OS/X

http://www.geeks3d.com/20130507/gputest-0-4-0-cross-platform-opengl-benchmark-released-opengl-4-tessellation-test-enabled-under-mac-osx

是否有人在最小例如(C++,OpenGL和GLSL),这是能够编译并运行?

此外,目前支持/不支持哪些功能?

我知道OS/X尚未正式支持镶嵌着色器。我正在寻找的是GPUTest 0.4.0中使用的黑客配方,显然它似乎在某些硬件上支持它。

+1

[根据特征矩阵(https://developer.apple.com/graphicsimaging/opengl/capabilities/),镶嵌不10.8.3下支持。所以我不知道他们是如何得到它的工作,除非这是一个无证的变化。 – 2013-05-09 13:27:27

回答

4

确定已经通过OpenGL分析器运行代码,它似乎使用镶嵌细化着色器,但不使用OpenGL定义。

至于我可以告诉你使用

glCreateShader(0x00008e87); //苔丝EVAL

glCreateShader(0x00008e88); //苔丝控件

我可以确认应用程序确实使用镶嵌着色器,因为我已经检查了着色器源代码,现在我要尝试使用上面的十六进制值集成到我自己的代码库中,并将报告回来。

编辑如果您使用以下应该所有的工作(见博客和视频here

所以有很多的代码基本黑客得到这个工作,我已经使用了以下定义,并得到一个基本的直通着色系统工作。

首先我用下面的

#ifdef DARWIN 
    #ifndef GL_TESS_CONTROL_SHADER 
     #define GL_TESS_CONTROL_SHADER 0x00008e88 
    #endif 
    #ifndef GL_TESS_EVALUATION_SHADER 
     #define GL_TESS_EVALUATION_SHADER 0x00008e87 
    #endif 
    #ifndef GL_PATCHES 
     #define GL_PATCHES 0x0000000e 
    #endif 
#endif 

然后,您可以加载着色器,你通常会做,但使用EVAL /控制是有效的着色器类型。当你开始绘画的时候,你必须使用补丁来绘制,所以使用glDrawArrays(GL_PATCHES ...)就像你通常做的那样。

我打算尽快做一个完整的演示/写作,但是因为是星期五下午,所以我一直在盯着代码,我要去酒吧!

Tesselation with inner and outer levels set to 6

+0

很酷。我期待看到你的结果! – Mortennobel 2013-05-10 10:00:39

+1

好吧,目前我可以创建和编译一个tess评估着色器,但编译失败的控件,我得到以下错误错误:0:2:布局'顶点'的无效使用 错误:0:11:使用未声明的标识符'gl_InvocationID' 错误:0:14:赋值的左手边一定不能是只读的,奇怪的是这个着色器会在Mac上的OpenGL profiler中编译,所以它与OpenGL上下文有关创建或GL状态,需要深入挖掘。 – 2013-05-10 11:38:02

+0

太棒了。干得不错! – Mortennobel 2013-05-11 12:23:57

0

我看到了一样,在标题中找不到任何内容,现在正在搜索其他示例。

该程序似乎可以在我的Mac/hackintosh(nVidia GT640)上正常工作,而且我的Mac Book Pro使用GT330M都是最新的Mountain Lion。

因此,如果它真的是镶嵌着色器,那么必须有一些我无法找到的私有API/hack。

+0

我完全意识到OS/X尚未正式支持曲面细分着色器。我期待的是它如何在GPU测试0.4中实现。0(如果它是真正镶嵌着色器运行)。 – Mortennobel 2013-05-10 09:11:15

+0

我想,我知道ML中没有官方支持的很多东西(例如,您可以使用#version 410核心并使用布局限定符来运行着色器),这两者都不应该被支持,所以这只是一个问题。弄清楚这个“黑客”是如何工作的,或者它只是一些奇特的Geo着色器。 – 2013-05-10 09:28:28