サンアンヘルズデモを参考にして作成した簡単なテストアプリケーションを作成しようとしています。現在(自分のネイティブ/ cppコードで)、私はフレームをレンダリングするときにglClearColorとglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)を呼び出すだけです。 OpenGLのlibを動的にロードするときに問題が発生します(dlopen( "libGLESv1_CM.so"、RTLD_NOW))。 dl openが成功し、シンボルを見つけることができますが、クリアカラーを緑色に設定しても、画面は黒色のままです。一方、私がシンボルをインポートしなければ、物事はうまくいくようです。Android:NDKを使ったOpenGLレンダリング
私はサンアンジェルスのデモを数回見てきましたが、私が逃したかもしれないものを見ることはできません。どんなアイデアやアドバイスも大歓迎です。私のインポートコードは以下の通りです:あなたがpontersを正しく定義されていることを確認し
uint32 ImportOpenGL()
{
uint32 uResult = 0;
glesLib = dlopen("libGLESv1_CM.so", RTLD_NOW);
if (!glesLib)
return 1;
#define GL_IMPORT_FUNC(funcName) \
{ \
*((void **)&(funcPtr_##funcName)) = (void *)dlsym(glesLib, #funcName); \
if(!funcPtr_##funcName) \
{ \
LOGW("Could not load OpenGL symbol: %s", #funcName); \
uResult = (!uResult ? 2 : uResult); \
} \
}
GL_IMPORT_FUNC(glBlendFunc);
GL_IMPORT_FUNC(glClear);
GL_IMPORT_FUNC(glClearColorx);
GL_IMPORT_FUNC(glClearColor);
GL_IMPORT_FUNC(glColor4x);
GL_IMPORT_FUNC(glColorPointer);
GL_IMPORT_FUNC(glDisable);
GL_IMPORT_FUNC(glDisableClientState);
GL_IMPORT_FUNC(glDrawArrays);
GL_IMPORT_FUNC(glEnable);
GL_IMPORT_FUNC(glEnableClientState);
GL_IMPORT_FUNC(glFrustumx);
GL_IMPORT_FUNC(glGetError);
GL_IMPORT_FUNC(glLightxv);
GL_IMPORT_FUNC(glLoadIdentity);
GL_IMPORT_FUNC(glMaterialx);
GL_IMPORT_FUNC(glMaterialxv);
GL_IMPORT_FUNC(glMatrixMode);
GL_IMPORT_FUNC(glMultMatrixx);
GL_IMPORT_FUNC(glNormalPointer);
GL_IMPORT_FUNC(glPopMatrix);
GL_IMPORT_FUNC(glPushMatrix);
GL_IMPORT_FUNC(glRotatex);
GL_IMPORT_FUNC(glScalex);
GL_IMPORT_FUNC(glShadeModel);
GL_IMPORT_FUNC(glTranslatex);
GL_IMPORT_FUNC(glVertexPointer);
GL_IMPORT_FUNC(glViewport);
#undef GL_IMPORT_FUNC
if(!uResult)
{
LOGI("Successfully imported OpenGL symbols");
}
return uResult;
}