2017-12-22 21 views
0

私はandroidでOpenGL ESのglslを勉強していて、this codeをアンドロイドデバイスで実行しようとしています。しかし、私はtimeパラメータを定義する方法を知らない。次のように私は、androidのglslの "time"パラメータを定義する方法

int time = GLES20.glGetUniformLocation(mProgram, "time"); 
GLES20.glUniform1f(time, System.currentTimeMillis()); 

timeパラメータを渡されたとき、私は、画面上の階調画像のいずれかの動きを見ることができませんでした。

答えて

1

使用、

GLES20.glUniform1f(time, (System.currentTimeMillis()/1000) % 60); 

this codeに時間値を変更します。設定された時間値が1513913007000で、値を1000または2000と加算すると、モーションは表示されません。これはSubexpressionが他の時間よりも大きすぎるためであり、リアルタイムフローが小さすぎるためですSystem.currentTimeMillis()

+0

ありがとうございます。しかし、あなたのコードを使用すると、スムーズに動かない。それはいくつかの固定ショットのスライドショーのようなものです。 –

+0

'(System.currentTimeMillis()/ m)%n)/(フロート)t'。より速くしたいなら、 'm'をもっと小さく設定することができます。または、 'System.currentTimeMillis()'を使わず、 'auto-increment'の代わりに' auto-increment'を使用してください。よりスムーズにしたい場合は、 'm'を小さく設定し、' n'を大きく設定し、適切な 't'を選択してください。より多くの表現があり、これは確かに最善ではありません。 – neuo

+0

最後に、私はあなたの考えのおかげで、適切なコードを見つけました。これは私のコード 'GLES20.glUniform1f(time、((System.currentTimeMillis() - mStartTime)/ 1000.0f));'です。 mStartTimeは、自分のアプリが起動した時刻です。ありがとう。 –

関連する問題