私はOpenGLES2.0で予測を行っていますが、残念ながらYを正にして、TouchEventsを使いやすくしたいと思っています。
現在、これは射影行列です。
private void setOrthographicMatrix(int w, int h)
{
orthographicMatrix[0] = (float) (2.0f / w ); //a
orthographicMatrix[3] = -1f; //tx
orthographicMatrix[5] = (float) (2.0f / h); //b
orthographicMatrix[7] = 1f; //ty
orthographicMatrix[10] = -1f; //c
orthographicMatrix[15] = 1f; //1
// a, 0, 0, tx,
// 0, b, 0, ty,
// 0, 0, c, tz,
// 0, 0, 0, 1
}
頂点シェーダー:
attribute vec4 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;
uniform mat4 u_MVPMatrix;
void main()
{
//Pass Values to Fragment Shader
v_texCoord = a_texCoord;
//Set Position
gl_Position = a_position * u_MVPMatrix;
}
フラグメントシェーダー:
precision mediump float;
varying vec2 v_texCoord;
uniform vec4 u_color;
uniform sampler2D u_s_texture;
void main()
{
gl_FragColor = texture2D(u_s_texture, v_texCoord) * u_color;
}
結果は次のとおりです。(0,0)-左上隅
0,0----------> X++
|
|
|
↓
Y--
そして、Yが画面の下で正になるように、投影をマッピングしたいと思います。
編集-解決策:
OrthographicMatrix関数のセットアップを、組み込みのAndroidMatrixライブラリを使用するように置き換えました。
Matrix.orthoM(orthographicMatrix, 0, 0, w, h, 0, -10f, 10f);
そして、私の頂点シェーダーをこれに変更しました:
gl_Position = u_MVPMatrix * a_position;