Mercurial > hg > Members > kono > Cerium
diff TaskManager/Test/test_render/task/CreateSpan.cpp @ 154:f4673e790675
task/ と spe/ の同期し忘れ。
こういうのめんどくさいからなんとかしたいんだけど
author | gongo@gendarme.local |
---|---|
date | Wed, 03 Dec 2008 20:14:23 +0900 |
parents | 9642aeef298d |
children | 77dac07efd79 |
line wrap: on
line diff
--- a/TaskManager/Test/test_render/task/CreateSpan.cpp Tue Dec 02 19:39:36 2008 +0900 +++ b/TaskManager/Test/test_render/task/CreateSpan.cpp Wed Dec 03 20:14:23 2008 +0900 @@ -122,10 +122,12 @@ tile->tix = tex_xpos; tile->tiy = tex_ypos; + tile->tile = span->tex_addr; + tile->padding = 1; } else { - while (cur_x < span->length_x) { - if (cur_x + MAX_TILE_LIST < span->length_x) { - len = MAX_TILE_LIST; + while (cur_x <= span->length_x) { + if (cur_x + MAX_TILE_LIST - 1 < span->length_x) { + len = MAX_TILE_LIST - 1; smanager->mainMem_alloc(TILE_ALLOCATE, sizeof(TileInfoList)); } else { len = span->length_x - cur_x; @@ -135,21 +137,28 @@ tilelist->init(); - for (int i = cur_x; i < cur_x + len; i++) { - tile = &tilelist->tileinfo[tilelist->size++]; - + for (int i = cur_x; i <= cur_x + len; i++) { tex_x = tex1*(end-1-i)/(end-1) + tex2*i/(end-1); tex_y = tey1*(end-1-i)/(end-1) + tey2*i/(end-1); if (tex_x > 1) tex_x = 1; if (tex_y > 1) tex_y = 1; - tex_xpos = (int)((span->tex_height-1) * tex_x); - tex_ypos = (int)((span->tex_width-1) * tex_y); + tex_xpos = (int)((span->tex_width-1) * tex_x); + tex_ypos = (int)((span->tex_height-1) * tex_y); + tile = &tilelist->tileinfo[tilelist->size++]; tile->tix = tex_xpos; tile->tiy = tex_ypos; + tile->padding = i; + + int blockX = tex_xpos / TEXTURE_SPLIT_PIXEL; + int blockY = tex_ypos / TEXTURE_SPLIT_PIXEL; + int block = blockX + (span->tex_width/TEXTURE_SPLIT_PIXEL)*blockY; + uint32 *addr = (uint32*)span->tex_addr; + tile->tile = (void*)(addr + block*64); + //tile->tile = span->tex_addr; } - if (cur_x + MAX_TILE_LIST < span->length_x) { + if (cur_x + MAX_TILE_LIST - 1 < span->length_x) { TileInfoListPtr tmp = tilelist; tilelist = send_tilelist; send_tilelist = tmp; @@ -165,8 +174,6 @@ smanager->dma_wait(TILE_STORE); smanager->dma_store(send_tilelist, (uint32)send_tilelist_addr, sizeof(TileInfoList), TILE_STORE); - - tilelist->init(); } cur_x += MAX_TILE_LIST;