私は LibGDX を使用して、PC および Android 向けの開発を開始しています。私は現在、GLSL (フルスクリーン クワッドに基づく) でカスタム シェーダーを作成する必要がある小さなプロジェクトに取り組んでいます。HLSL 環境から来て、SpriteBatch と組み合わせてシェーダー システム全体を設定するのに少し苦労しました (コードを可能な限りシンプルに保ちたいため)。
デスクトップで動作する次のシェーダー コードがあります。
頂点シェーダー:
attribute vec4 a_position;
uniform mat4 u_projectionViewMatrix;
void main()
{
gl_Position = a_position * u_projectionViewMatrix;
}
フラグメントシェーダー:
uniform vec2 effectOrigin;
uniform vec2 effectDir;
void main()
{
float distToOrigin = distance(effectOrigin.xy, gl_FragCoord.xy);
gl_FragColor = vec4(mod(distToOrigin+effectDir.x*30, 30)-15, 0.0, 0.0, 1.0);
}
私が言ったように、それはデスクトップ (Windows) で動作し、素敵な円のパターンが得られます。ただし、Androidではコンパイルされず、背景色がクリアされます。Android の OpenGL ES 2 パーミッションと関係があるのではないかと疑ったので、この行をマニフェストに追加しました:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
、しかしこれは違いを生むようには見えませんでした。
また、フロートとベクトルの精度に関係があるのではないかと思いましたが、修正するためにそれらをどのように変更する必要があるのか わかりませんでした.
これについて私を助けることができる人はいますか?私は他の場所で答えを見つけることができませんでした!
前もって感謝します、
百合
PS シェーダーのコンパイル中に何が問題になったかを確認する方法はありますか? シェーダーでのデバッグが難しいことは知っていますが、コンパイル中にどこで問題が発生した可能性があるかについて、少なくともいくつかのアイデアがあれば素晴らしいでしょう.