[英]glGetUniformLocation return -1 OpenGL ES (iPhone)
我有一個片段着色器,具有以下屬性:
varying highp vec2 coordinate;
precision mediump float;
uniform sampler2D videoframe;
uniform sampler2D videosprite;
uniform vec4 mask;
uniform float threshold;
我正在獲取他們的位置,然后設置它們:
_frame = glGetUniformLocation(_program, "videoframe");
_sprite = glGetUniformLocation(_program, "videosprite");
_mask = glGetUniformLocation(_program, "mask");
_threshold = glGetUniformLocation(_program, "threshold");
NSLog(@"%i %i %i %i", _frame, _sprite, _mask, _threshold);
但是,日志顯示: 0 2 1 -1
從文檔中,我看到-1(閾值均勻)意味着它失敗了。 它為什么失敗? 謝謝
GLSL編譯器可以(通常會)優化着色器中未使用的任何制服和屬性。 您只能查詢活動制服的位置,即在着色器的至少一個分支中使用的位置。
所以我猜你的着色器代碼中的任何地方都沒有使用threshold
變量。 但是在這種情況下,無論如何你都不需要它的值,為位置-1
設置一個統一的值就不會做任何事情。 所以你實際上不必擔心這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.