OS / X上的OpenGL 4细分

时间:2013-05-09 12:50:55

标签: macos opengl glsl

显然曲面细分着色器能够在OSX 10.8.3下运行:

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中使用的hack的配方,显然它似乎在某些硬件上支持它。

2 个答案:

答案 0 :(得分:4)

好的是通过OpenGL分析器运行代码,似乎它使用了镶嵌着色器,但没有使用OpenGL定义。

据我可以告诉你使用

glCreateShader(0x00008e87); // tess eval

glCreateShader(0x00008e88); // tess control

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

修改如果您使用以下内容,则应该全部有效(请参阅博客和视频here

所以有很多基本的代码破解工作,我已经使用了以下定义并得到了一个基本的passthrough着色器系统。

首先我使用以下

#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 / Control作为有效的着色器类型。当你进行绘图时,你必须使用补丁来绘制,所以像往常一样使用glDrawArrays(GL_PATCHES ...)。

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

Tesselation with inner and outer levels set to 6

答案 1 :(得分:0)

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

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

因此,如果它是真正的曲面细分着色器运行那里必须有一些我找不到的私有API / hack。