簡體   English   中英

glGetUniformLocation返回-1 OpenGL ES(iPhone)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM