私はOpenGLを初めて使い、フラグメントシェーダーを見つけようとしています。私はウィンドウ内に矩形を描きました。ピクセルの高さをハードコーディングすることなく、上半分の色を別の色(たとえば青色)にしたいと思います。 1000年のウィンドウの高さでGLSL for OpenGLのウィンドウサイズ?
は、私のフラグメントシェーダでは、私が持っている:
void main(){
if((gl_FragCoord.y) > 500)
{
color = vec3(.3, .3, 1);
}
else
{
color = fragmentColor;
}
どの色の長方形の青の上半分を。しかし、500ピクセルを使うのではなく、私のフラグメントシェーダーの内側からウィンドウの高さを取得したいのですが? uniform vec2 windowSize
を初期化し、glUniform1i()
を使用して、この変数にウィンドウの高さを設定しようとしていますが、どうすればよいかわかりません。
'vec2'であるため、' windowSize'を設定するには 'glUniform2f'を使う必要があります。 – rwols
フラグメントシェーダでどのようにコールすることができますか?それはglUniform2f(windowSize、?、?)ですか?他の2つの議論をどのようにすればいいですか? – 3PA
まず、['glGetUniformLocation'](https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glGetUniformLocation.xhtml)を介してユニフォーム変数への「ハンドル」を取得し、それを使用します'glUniform2f'の最初の引数として" handle "を使います。 'glUniform2f'の第二引数と第三引数は、あなたが望むものであれば何でも構いません。 – rwols