沒想到openGL ES 2.0和1.x之間的差別那麼大,而市面上介紹2.0的資料又很少。
說說問題:怎麼向shader中的struct傳數據?
直接說答案:struct不提供一次全部賦值的方法,只能一個一個數據傳入。
比如:
那麼就需要向
blur.a和blur.b中一個一個賦值數據。
還有一件事,本以為GLSL的語法在Android和iOS上都一樣,結果,有差別:
在iOS中變量名和方法名可以共用,在android中不可以共用。否在在useProgram的時候會報invalidate_operation的錯誤。
多麼坑爹的差別啊!
關於錯誤碼,咱上網搜了很久錯誤碼都沒找到代表什麼意思。結果很SB,錯誤碼寫在了GLES20的常量中。如果你能看到源代碼,他們還被寫在了一起。
再補充一條,關於圖像加載。
原以為加載完圖像了會自動分配到sampler2D上,結果不是這樣的,需要自己給sampler2D分配編號:
fragmentShader:
uniform sampler2D pic1;
uniform sampler2D pic2;
如果不分配編號的話,加載的就都是一個圖像,苦逼。
java: