2009年1月18日日曜日

Android Dev Phone 1 で GL_OES_matrix_palette 

matrix_palette 関連は OpenGLES1.1 の仕様だと思っていましたが、1.1 でも拡張機能に入れられてしまったようです。どこかのチップメーカがサポートを嫌がったのでしょうか。android のヘッダにもAPIが見当たりません。

でも、ドライバは、GL_OES_matrix_palette をサポートしているとでてたので、ハードをたたくドライバ libhgl.so を使って、拡張APIのシンボルをロードしてみました。

////////////////////////////////////////////////////////////////////
// Load OES symbol
////////////////////////////////////////////////////////////////////
#include
struct dso_symbol
{
char *symbol;
void *api;
};
static struct dso_symbol symbol_table[] =
{
{ "glCurrentPaletteMatrixOES", NULL },
{ "glLoadPaletteFromModelViewMatrixOES", NULL },
{ "glMatrixIndexPointerOES", NULL },
{ "glWeightPointerOES", NULL },
};
void LoadDsoSymbol()
{
int i;
int symbol_num = sizeof(symbol_table)/sizeof(symbol_table[0]);

void *dso = dlopen( "/system/lib/libhgl.so", RTLD_NOW | RTLD_LOCAL );
if( dso )
{
LOGI( "SUCCESS : Load libhgl.so" );
for( i = 0 ; i < symbol_num ; ++i )
{
symbol_table[i].api = dlsym( dso, symbol_table[i].symbol );
if( symbol_table[i].api )
{
LOGI( "SUCCESS : Load %s", symbol_table[i].symbol );
}
else
{
LOGI( "ERROR : Load %s", symbol_table[i].symbol );
}
}
dlclose( dso );
}
else
{
LOGI( "ERROR : Load libhgl.so" );
}

}

その結果、、、、

I/Game1 ( 1302): SUCCESS : Load libhgl.so
I/Game1 ( 1302): SUCCESS : Load glCurrentPaletteMatrixOES
I/Game1 ( 1302): SUCCESS : Load glLoadPaletteFromModelViewMatrixOES
I/Game1 ( 1302): SUCCESS : Load glMatrixIndexPointerOES
I/Game1 ( 1302): SUCCESS : Load glWeightPointerOES

やっぱりシンボルはロードできました。動かしてないけど、たぶん動くでしょう。

0 件のコメント: