2013-05-09 80 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