2013-05-31 109 views
3

我想在我的GLSL着色器中執行一些整數運算(除法和模),但它們似乎並不工作,我讀到我需要啓用EXT_GPU_shader4才能獲得整數運算。然而,我找不到的是如何做到這一點。是線路:啓用OpenGL擴展

#version 330 core 
#extension GL_EXT_GPU_SHADER4 : require 

夠了嗎?或者我需要以某種方式使用C API來啓用它?目前我在編譯過程中遇到了一個錯誤,那就是不支持該擴展。我在GeForce 670上;一張相當近的牌。

+2

這是有效的,但是是多餘的。版本330已包含整數支持。如果擴展名不可用,使用「require」而不是「enable」會導致錯誤。請注意,如果內核已經支持擴展,則不必支持該擴展(當然,它不需要受到支持,但即使該卡支持整數操作,並且即使支持包含該功能的核心版本,實現並不需要公開該擴展)。 – Damon

+2

糾正我,如果我錯了,但EXT_gpu_shader4的功能已經可用:'#version 150 core'。 –

+0

是的,你們是對的。謝謝!事實證明我的結果都是瘋狂的,因爲LWJGL(或OpenGL?)正在將我的緩衝區從int - > float轉換,並且我有一個綁定到緩衝區的'int int var'。所以我試圖對浮點數的二進制表示進行整數運算,它是從我原來的輸入數據轉換而來的... – atanamir

回答

5

如果你想啓用GPU_shader4,那麼是的,那一行就可以做到。

但是,你根本不應該啓用EXT_gpu_shader4 OpenGL 3.0已將所有此擴展功能整合到核心功能中。沒有理由啓用擴展程序來訪問您已有權訪問的內容,這要感謝您的#version聲明。