基本的に、Android と OpenGL ES 2.0 のプログラミングを掘り下げたところ、ちょっとした問題にぶつかりました。
私のコードは正常にコンパイルされて実行されますが、opengl 関数が機能していないようです。
GLES20.createShader(GLES20.GL_VERTEX_SHADER);
GLES20.glCreateProgram();
すべて 0 を返します。
同様にこれ:
int posHandle = GLES20.glGetAttribLocation(mShader.getProgramId(), "vPosition");
-1 などを返します。
アクティビティの作成方法:
// Activity
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mSurfaceView = new GLESSurfaceView(this);
final ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
final ConfigurationInfo configInfo = activityManager.getDeviceConfigurationInfo();
final boolean supports_gles2 = configInfo.reqGlEsVersion >= 0x20000;
if (supports_gles2)
{
mSurfaceView.setEGLContextClientVersion(2);
mSurfaceView.setRenderer(new GLESRenderer());
}
else
{
//Log.e("", "Doesn't support GLES 2.0");
}
setContentView(mSurfaceView);
}
これは AndroidManifest.xml にあります
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
GLES 2.0 の機能を正常に動作させるには、それでよいのでしょうか? 必要に応じてさらにコードを追加することもできますが、基本的には、シェーダーのセットアップ、頂点バッファーの作成、および基本的な形状のレンダリングのみです。
乾杯
編集: GLES20.glGetError() が GL_NO_ERROR フラグを返すことを追加する必要があります