Exemplo n.º 1
0
/* 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);
}
Exemplo n.º 2
0
/* 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);
}
Exemplo n.º 3
0
/* 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);
}
Exemplo n.º 4
0
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;
    }
}