wrongwrongな開発日記

情報系大学生が挑戦したことや日常を書いていきます

【Android】OpenGL ESでシェーダーを書いて、何も問題無い(ように見える)のに動かないコードが出た時のこと

AndroidOpenGL ESのプログラマブルシェーダーを書いた時、何も問題が無いように見えるのに動かないコードが出た時のことを2つ書きます。
症状は以下の2つ。

  1. エラーも出ない、アプリが落ちることもない、ただ描画がされない
  2. 問題無いはずのシェーダーがコンパイルに失敗しアプリが落ちる
1

1の問題は、MainActivityでシェーダーを選択し、シェーダー(String)をintentを介して描画Activityに渡し、描画を行おうとした際に発生しました。
Logcatには特に表示がなく、戻るボタンで元のアクティビティに戻ることもでき、描画だけが出来ないという状態でした。
この問題は、しっかりと確認していませんが、大規模なシェーダーを別Activityに渡す形で利用すると発生するようです。
シェーダー本体はintentで渡さないようにした所解決しました。

2

2の問題は、以下のようなコードで発生しました。

float hoge(float input){
  :
  :
  :
}

この問題は、引数に使っているinputという語が予約語だったことが問題でした。 その他予約語は以下等で確認できます。
qiita.com

終わりに

完全に独学で始めているせいでOpenGL ESに関する知識が足りなくて辛いです。