consoledevФорум

Нужна помощь по дисплэйным спискам

#0
16:40, 18 фев 2009

Собственно, камрады, проблема в следующем: для своего двигла на неофициальном сдк, для отображения больших пространств написал 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();

Соответственно вопрос - знает кто-нибудь другой способ?

#1
14:10, 24 мар 2009

другой способ - создание в оффлайне этого списка
и запись его в напрямую в бинарь
после загрузки на PSP можешь просто ему делать call

consoledevФорум

Тема в архиве.