Пример #1
0
void render_scene(void) {
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	for (int i = 0; i < 2; i++)
	for (int j = 0; j < 2; j++) {
		glPushMatrix();
		glTranslatef(70.0, 0, 70.0);
		glTranslatef(i*10.0, 0, j * 10.0);
		glCallList(snowman_display_list);
		
		glPopMatrix();
	}

	render_height_map();
	render_wall();
	render_sky();

	render_tree();








	glutSwapBuffers();
}
Пример #2
0
void render_loop() {
    int base,top,state;
    //draw them backgrounds!
    switch(levl->bgtype) {
    default:
    case 0:
        clear_bitmap(buffer); //black backgrund, not that useful
        break;
    case 1:
        render_sky(levl->lines); //sky-thingy
        break;
    case 2:
        show_fire(); //A fire...
        break;
    }
    render_level_map(levl,xorg,yorg);
    for (int ei=levl->entitycnt-1;ei>=0;ei--) {
        ENTITY *e = levl->entities+ei;
        switch (e->type) {
        default:
            printf("Unknown entity type in render loop! type: %d id: %d",e->type,ei);
        case ENTITY_TYPE_NULL:
            break;
        case ENTITY_TYPE_PLAYER:
            xorg = e->x-368/64.0 <=0 ? 0 : e->x+432/64.0 > levl->sizex ? levl->sizex-800/64.0 : e->x-368/64.0;
            yorg = e->y-268/64.0 <=0 ? 0 : e->y+332/64.0 > levl->sizey ? levl->sizey-600/64.0 : e->y-268/64.0;
            state = (e->data1&0x0300)>>16;
            top = 0;
            if (e->accely < 0) top = 1;
            if (e->accely > 0) top = 2;
            if (e->accely == 1/8.0) top = 5;
            if (e->accelx < 0) top = 3;
            if (e->accelx > 0) top = 4;
            if (e->health <= 0) top = 7;
            
            base = 0;
            render_player((e->x-xorg)*64,(e->y-yorg)*64,base,top);
            render_health(10,10,256,32,e->health,1024);
            textprintf_ex(buffer,font,0,0,getpixel(buffer,0,0)^0xFFFF,-1,"P: %d",e->data3);
            //stretch_blit(collectable_c[2],buffer,0,0,64,64,800-16,0,16,16);
            textprintf_right_ex(buffer,font,799,0,getpixel(buffer,799,0)^0xFFFF,-1,"%d",e->data4);
            break;
        case ENTITY_TYPE_COLLECTABLE:
            //printf("%X, %X, %X, %X ?? %X %X\n",e->data2,e->data2&0xFF00,e->data2&0xFF00 == 0x0100,0x0100,e->data2&0xFF00 > 0x0100,e->data2&0xFF00 < 0x0100);
            if ((e->data2&0xFF00) == 0x0100) {
                draw_rle_sprite(buffer,collectable_c[e->data2&0x0007],(e->x-xorg)*64,(e->y-yorg)*64);
                //draw_rle_sprite(buffer,collectable_c[e->data2&0x0007],0, 0);
            }
            break;
        }
    }
}