/* Load a PCX texture * * Parameters : none * * */ void GraphicalElement::createTexturePCX(char *fileName, int indiceTex) { kos_img_t img; pvr_ptr_t txaddr; GLuint txr; if (pcx_to_img(fileName, &img) < 0) { printf("can't load %s\n", fileName); return; } txaddr = pvr_mem_malloc(img.w * img.h * 2); pvr_txr_load_kimg(&img, txaddr, PVR_TXRLOAD_INVERT_Y); kos_img_free(&img, 0); glGenTextures(1, &txr); /* insertion in the vector */ listeTexture.push_back(txr); glBindTexture(GL_TEXTURE_2D, listeTexture.back()); glKosTex2D(GL_RGB565_TWID, img.w, img.h, txaddr); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_FILTER, GL_FILTER_BILINEAR); }
/* Load a texture using pcx_load_texture and glKosTex2D */ void loadtxr(const char *fn, GLuint *txr) { kos_img_t img; pvr_ptr_t txaddr; if (pcx_to_img(fn, &img) < 0) { Logger::log(LOG_ERROR,"can't load %s\n", fn); return; } txaddr = pvr_mem_malloc(img.w * img.h * 2); pvr_txr_load_kimg(&img, txaddr, PVR_TXRLOAD_INVERT_Y); kos_img_free(&img, 0); glKosTex2D(GL_RGB565_TWID, img.w, img.h, txaddr); }
/* Load a texture using pcx_load_texture and glKosTex2D */ void loadtxr(const char *fn, GLuint *txr) { kos_img_t img; pvr_ptr_t txaddr; if (pcx_to_img(fn, &img) < 0) { printf("can't load %s\n", fn); return; } txaddr = pvr_mem_malloc(img.w * img.h * 2); pvr_txr_load_kimg(&img, txaddr, PVR_TXRLOAD_INVERT_Y); kos_img_free(&img, 0); glGenTextures(1, txr); glBindTexture(GL_TEXTURE_2D, *txr); glKosTex2D(GL_RGB565_TWID, img.w, img.h, txaddr); }
void setup() { pvr_poly_cxt_t cxt; int i; float x, y, z; int w1, h1, w2, h2; uint32 fmt1, fmt2; kos_img_t img; if(pcx_to_img("/rd/crate.pcx", &img)) { printf("Failed to load /rd/crate.pcx\n"); exit(1); } w1 = img.w; h1 = img.h; fmt1 = PVR_TXRFMT_RGB565 | PVR_TXRFMT_TWIDDLED; txr1 = pvr_mem_malloc(img.byte_count); pvr_txr_load_kimg(&img, txr1, 0); kos_img_free(&img, 0); if(kmg_to_img("/rd/fruit.kmg", &img)) { printf("Failed to load /rd/fruit.kmg\n"); exit(1); } w2 = img.w; h2 = img.h; fmt2 = PVR_TXRFMT_RGB565 | PVR_TXRFMT_VQ_ENABLE | PVR_TXRFMT_TWIDDLED; txr2 = pvr_mem_malloc(img.byte_count); pvr_txr_load_kimg(&img, txr2, 0); kos_img_free(&img, 0); printf("Loaded textures\n"); pvr_poly_cxt_txr_mod(&cxt, list, fmt1, w1, h1, txr1, PVR_FILTER_BILINEAR, fmt2, w2, h2, txr2, PVR_FILTER_NONE); pvr_poly_mod_compile(&phdr, &cxt); pvr_mod_compile(&mhdr, list + 1, PVR_MODIFIER_OTHER_POLY, PVR_CULLING_NONE); pvr_mod_compile(&mhdr2, list + 1, PVR_MODIFIER_INCLUDE_LAST_POLY, PVR_CULLING_NONE); for(i = 0; i < NUM_POLYS; ++i) { x = rand() % 640; y = rand() % 480; z = rand() % 100 + 1; verts[i * 4].flags = PVR_CMD_VERTEX; verts[i * 4].x = x - 50; verts[i * 4].y = y + 50; verts[i * 4].z = z; verts[i * 4].u0 = 0.0f; verts[i * 4].v0 = 1.0f; verts[i * 4].argb0 = 0xFFFFFFFF; verts[i * 4].oargb0 = 0xFF000000; verts[i * 4].u1 = 0.0f; verts[i * 4].v1 = 1.0f; verts[i * 4].argb1 = 0xFFFFFFFF; verts[i * 4].oargb1 = 0xFF000000; verts[i * 4].d1 = verts[i * 4].d2 = verts[i * 4].d3 = verts[i * 4].d4 = 0; verts[i * 4 + 1].flags = PVR_CMD_VERTEX; verts[i * 4 + 1].x = x - 50; verts[i * 4 + 1].y = y - 50; verts[i * 4 + 1].z = z; verts[i * 4 + 1].u0 = 0.0f; verts[i * 4 + 1].v0 = 0.0f; verts[i * 4 + 1].argb0 = 0xFFFFFFFF; verts[i * 4 + 1].oargb0 = 0xFF000000; verts[i * 4 + 1].u1 = 0.0f; verts[i * 4 + 1].v1 = 0.0f; verts[i * 4 + 1].argb1 = 0xFFFFFFFF; verts[i * 4 + 1].oargb1 = 0xFF000000; verts[i * 4 + 1].d1 = verts[i * 4 + 1].d2 = verts[i * 4 + 1].d3 = verts[i * 4 + 1].d4 = 0; verts[i * 4 + 2].flags = PVR_CMD_VERTEX; verts[i * 4 + 2].x = x + 50; verts[i * 4 + 2].y = y + 50; verts[i * 4 + 2].z = z; verts[i * 4 + 2].u0 = 1.0f; verts[i * 4 + 2].v0 = 1.0f; verts[i * 4 + 2].argb0 = 0xFFFFFFFF; verts[i * 4 + 2].oargb0 = 0xFF000000; verts[i * 4 + 2].u1 = 1.0f; verts[i * 4 + 2].v1 = 1.0f; verts[i * 4 + 2].argb1 = 0xFFFFFFFF; verts[i * 4 + 2].oargb1 = 0xFF000000; verts[i * 4 + 2].d1 = verts[i * 4 + 2].d2 = verts[i * 4 + 2].d3 = verts[i * 4 + 2].d4 = 0; verts[i * 4 + 3].flags = PVR_CMD_VERTEX_EOL; verts[i * 4 + 3].x = x + 50; verts[i * 4 + 3].y = y - 50; verts[i * 4 + 3].z = z; verts[i * 4 + 3].u0 = 1.0f; verts[i * 4 + 3].v0 = 0.0f; verts[i * 4 + 3].argb0 = 0xFFFFFFFF; verts[i * 4 + 3].oargb0 = 0xFF000000; verts[i * 4 + 3].u1 = 1.0f; verts[i * 4 + 3].v1 = 0.0f; verts[i * 4 + 3].argb1 = 0xFFFFFFFF; verts[i * 4 + 3].oargb1 = 0xFF000000; verts[i * 4 + 3].d1 = verts[i * 4 + 3].d2 = verts[i * 4 + 3].d3 = verts[i * 4 + 3].d4 = 0; } }