我正在使用GLCameraRipple example在我用glTexImage2D加載的靜態圖像上產生漣漪。如何知道GLCameraRipple示例中的漣漪何時停止?
我使用自己的着色器,因爲這些示例中的着色器用於從視頻饋送中獲取圖像。
它響應觸摸並在觸摸位置產生漣漪。
它工作正常,但我需要它暫停繪圖,出於電池保存原因,當波紋動畫完成時。在這個來自Apple的例子中,我沒有看到任何地方我可以檢查這個狀態。 GLKView或GLKViewController對此沒有任何委託方法。
它使用了一個在我的GLKViewController的每一個更新中調用的-runSimulation方法,它完成了所有的魔法,但是我仍然沒有看到我能在哪裏檢查漣漪是否完成了動畫,甚至比較了初始狀態與漣漪遍佈的狀態。
我目前在數我自己多少時間漣漪動畫需要完成最多,直到我們看到的是一個靜態圖像,我已經設置它在這段時間後暫停,並在觸摸時再次取消暫停事件發生,但它根本感覺不對。 (在較大的屏幕上(例如在iPad上),動畫持續時間不同,並且可能因池大小,網格因子,觸摸半徑等而異)。
我希望有一種方法可以檢查視圖的內容與初始狀態不同(當我剛剛加載圖像時)並知道漣漪動畫已完成播放?
我對這段代碼示例一無所知,但有一點我確信,OpenGL不會動畫任何東西:它只繪製ObjectiveC要求他畫的東西。所以必須在runSimulation()內部,而不是在OpenGL內部。 – Calvin1602
粗略地看一下源代碼,可以看出,連鎖反應似乎是通過分別使用s_offset和t_offset來改變's_tc'和't_tc'來完成的。也許測試這些偏移量是否接近於零(從不使用浮點數上的相等性測試)是否會起作用? – larvyde
我剛剛檢查過這個,s_tc總是1,t_tc總是0.27。只有s_offset和t_offset會變化,但它們會從-5.9747857449110597e-05的某些值不斷變化爲+ 4.1495609366393182e-06,隨機採用零關閉值(?)。它們從不停止或接近任何特定值 –