Собственно, камрады, проблема в следующем: для своего двигла на неофициальном сдк, для отображения больших пространств написал ROAM в связке с динамическими окто-деревьями. Соответственно встала насущная необходимость в дисплейных листах для вывода статики. В отличии от opengl где для дисплейных листов надо указать лишь идентификатор, в sceGu под листы надо выделять память, размер которой никак не могу въехать как рассчитывать. На ум пришло только следующее:
void* dList = memalign(16, 65536);
//пишем в список на прямую
sceGuStart(GU_DIRECT, dList);
sceGuTexMode(texture->textureMode, 0,0,0);
sceGuTexImage(0,
texture->textureWidth,
texture->textureHeight,
texture->textureWidth,
texture->data);
sceGuTexEnvColor(GU_COLOR(0.5f, 0.5f, 0.5f, 1.0f));
sceGuModelColor(1,1,1,1);
sceGuTexScale(1.0f,1.0f);
sceGuTexOffset(0.0f,0.0f);
//возвращает реальный размер сгенеренного списка
int lsize = sceGuFinish();
free(dList);
//генерим список, зная его реальный необходимый размер
void *callList = memalign(16, lsize);
sceGuStart(GU_CALL, callList);
sceGuTexMode(texture->textureMode, 0,0,0);
sceGuTexImage(0,
texture->textureWidth,
texture->textureHeight,
texture->textureWidth,
texture->data);
sceGuTexEnvColor(GU_COLOR(0.5f, 0.5f, 0.5f, 1.0f));
sceGuModelColor(1,1,1,1);
sceGuTexScale(1.0f,1.0f);
sceGuTexOffset(0.0f,0.0f);
sceGuFinish();Соответственно вопрос - знает кто-нибудь другой способ?
другой способ - создание в оффлайне этого списка
и запись его в напрямую в бинарь
после загрузки на PSP можешь просто ему делать call
Тема в архиве.