Ejemplo n.º 1
0
void traverse_tree(NODE *node, VEC2F p, VEC2F v, VEC2F vertex[], VERTEX map_vertex[])
{
 float k;
 int j = 1;
 if(key[KEY_SPACE])
  j = -1;

 if(node != NULL)
  {
   VEC2F vert = vec2f(map_vertex[node->a * 2].local.x, map_vertex[node->a * 2].local.z);
   k = VEC2F_DOT_PRODUCT(node->n, VEC2F_DIFF(vert, p));

   if(k * j < 0.0)
    {
     if(node->right != NULL)
      traverse_tree(node->right, p, v, vertex, map_vertex);
     //if(in_view(p, v, vertex[node->a], vertex[node->b]))
      draw_wall(map_vertex, node->a, node->b);
     if(node->left != NULL)
      traverse_tree(node->left, p, v, vertex, map_vertex);
    }

   else
    {
     if(node->left != NULL)
      traverse_tree(node->left, p, v, vertex, map_vertex);
     //if(in_view(p, v, vertex[node->a], vertex[node->b]))
      draw_wall(map_vertex, node->a, node->b);
     if(node->right != NULL)
      traverse_tree(node->right, p, v, vertex, map_vertex);
    }
  }
}
Ejemplo n.º 2
0
void		render_col(t_event *e, t_raycast *rc, int x, float wall_dist)
{
	int			line_height;
	int			draw[2];
	float		y;

	line_height = abs((int)(e->height / wall_dist));
	draw[0] = -line_height / 2 + e->height / 2;
	if (draw[0] < 0)
		draw[0] = 0;
	draw[1] = line_height / 2 + e->height / 2;
	if (draw[1] >= e->height)
		draw[1] = e->height;
	calc_wall(e, rc);
	y = draw[0] - 1;
	while (++y <= draw[1])
	{
		draw_wall(e, rc, get_vec2(x, y), line_height);
	}
	calc_ground(rc);
	y = draw[1] - 1;
	while (++y < e->height)
	{
		rc->cdist = e->height / (2.0 * y - e->height);
		rc->coef = rc->cdist / wall_dist;
		draw_ground(e, rc, x, y);
	}
}
Ejemplo n.º 3
0
	void draw_main()
	{	
		if(GetNowCount() - Csystem::start_time > 90000) return;

		SetUseZBuffer3D( TRUE );
		SetWriteZBuffer3D( TRUE );
		ChangeLightTypePoint( VGet(0,500,0), 1000, 2, 0, 0 ) ;
		draw_wall(VGet(-500,1000,-500),VGet(-500,1000,500),VGet(500,1000,500),VGet(500,1000,-500),
				VGet(-500,0,-500),VGet(-500,0,500),VGet(500,0,500),VGet(500,0,-500));


		Pplayer->Preticle->draw();
		if(Pplayer->target_type == Cplayer::FREE)
		{
			Pplayer->draw();
			Pplayer->Pright_arm->right_draw();
			Pplayer->Pleft_arm->left_draw();
		}
		int player_hp = 254 * Pplayer->hit_point/1500;
		DrawRectGraph(80,14,0,0,player_hp,25,player_hp_g,TRUE,FALSE);

		switch (Csystem::game_mode)
		{
		case Csystem::SOLO:
			Pboss->draw();
			DrawRectGraph(1195-(254 * Pboss->hit_point/4193),14,254 -(254 * Pboss->hit_point/4193),0,254,25,enemy_hp_g,TRUE,FALSE);
			break;
		case Csystem::ONLINE:
			Penemy->draw();
			DrawRectGraph(1195-(254 * Penemy->hit_point/1500),14,254 -(254 * Penemy->hit_point/1500),0,254,25,enemy_hp_g,TRUE,FALSE);
			break;
		}
		for(int i = 0;i < 4;i++)
		{
			for(int k = 0;k < AMMO_MAX;k++)
			{
				Pplayer->Pleft_shot[i][k]->draw();
				Pplayer->Pright_shot[i][k]->draw();
			}
		}
		for(int k = 0;k < AMMO_MAX;k++)
		{
			Pboss->Pshot[k]->draw();
		}

		DrawGraph(0,0,hp_bar_g,TRUE);
		Pcamera->draw();
#ifdef _DEBUG
		DrawFormatString(800,0,0x000fff,"%d",GetJoypadInputState( DX_INPUT_PAD1 ));
		DrawFormatString(0,20,0x000000,"X座標:%6f",Pplayer->pos.x);
		DrawFormatString(0,40,0x000000,"Y座標:%6f",Pplayer->pos.y);
		DrawFormatString(0,60,0x000000,"Z座標%6f",Pplayer->pos.z);
		DrawFormatString(460,0,0x000000,"敵撃破数%3d",Csystem::destroy_enemy);
		DrawFormatString(460,20,0x000000,"経過時間%2d秒",(GetNowCount() - Csystem::start_time)/1000);
#endif
	}
Ejemplo n.º 4
0
Archivo: wall.c Proyecto: d11/sdl_tank
void draw_walls(SDL_Surface *screen, Wall *w)
{
    int i;
    for (i = 0; i < WALL_MAX; i++)
    {
        if(w[i].ex) {
            draw_wall(screen, &w[i]);
        }
    }
}
Ejemplo n.º 5
0
void compoe_teclado(GLfloat lado, GLfloat atras){

  glColor3f(1,1,1);

      glScalef (2.6, 0.2, 1.2);
  
  draw_wall(lado, -4, 4.0-atras,
      -18.7-lado, -4.0, 4.0-atras,
      -18.7-lado, -4.0, -18.7-lado,
       4.0-atras , -4.0, -18.7-lado, 4); 


}
Ejemplo n.º 6
0
t_bunny_response        mainloop(void *data)
{
  t_win			*win;
  t_bunny_position	origin;

  origin.x = 0;
  origin.y = 0;
  win = data;
  move_me(win);
  draw_wall(win);
  bunny_blit(&win->win->buffer, &win->array->clipable, &origin);
  bunny_display(win->win);
  return (GO_ON);
}
Ejemplo n.º 7
0
void	choose_draw(t_env *e, int start, int end)
{
	if (e->text == 0)
		draw_tlwall(e, start, end);
	else
	{
		if (e->xpm == 10 && e->open == 1)
			open_door(e, start, end);
		else if (e->xpm >= 11 && e->xpm < 15)
			draw_spwall(e, start, end, (e->xpm - 4));
		else if (e->xpm >= 15)
			draw_sp_multiwall(e, start, end, (e->xpm - 4));
		else
			draw_wall(e, start, end);
	}
}
Ejemplo n.º 8
0
int main()
{
	int state=0;
	init_scr();
	init_gamewin();
	init_wall();
	begain_game();
	draw_wall();
	draw_bird();
    char c=getch();
	while((state=refresh_game())>0)
	  ;
	if(state==-2)
	  game_over();

    endwin();
	return 0;
	
}
Ejemplo n.º 9
0
int	launch_the_game(t_opengl *opengl, t_camera *camera)
{
  int	i = 0;
  int	continuer = 1;
  t_coord	player = {0, 0, 0, 0, UP};
  static t_ptr_key	ptr[9] =
    {{SDLK_DOWN, &modif_cam_z}, {SDLK_UP, &modif_cam_z},
     {SDLK_LEFT, &modif_cam_x}, {SDLK_RIGHT, &modif_cam_x},
     {280, &modif_cam_y}, {281, &modif_cam_y},
     {Q, &move}, {D, &move},
     {0, NULL}};

  while (continuer == 1) {
    SDL_PollEvent(&opengl->event);
    SDL_Delay(10);
    if (opengl->event.type == SDL_QUIT)
      exit(SUCCESS);
    if (opengl->event.type == SDL_KEYDOWN) {
      i = 0;
      while (i < 11) {
	if (opengl->event.key.keysym.sym == ptr[i].keycode) {
	  if ((i % 2) == 0)
	    ptr[i].ptr_keycode(camera, &player, 0);
	  else if ((i % 2) == 1)
	    ptr[i].ptr_keycode(camera, &player, 1);
	}
	i = i + 1;
      }
    }
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(camera->x, camera->y, camera->z,
	      camera->eye_x, camera->eye_y, camera->eye_z, 0, 0, 1);
    draw_platform();
    draw_wall(&player);
    SDL_GL_SwapBuffers();
    glFlush();
  }
  return (SUCCESS);
}
Ejemplo n.º 10
0
void			draw_vertical_line(t_env *e)
{
	if (e->wall.end < 0 || e->wall.start >= SCREEN_H
			|| e->x < 0 || e->x >= SCREEN_W)
		return ;
	if (e->wall.start < 0)
		e->wall.start = 0;
	if (e->wall.end >= SCREEN_W)
		e->wall.end = SCREEN_H - 1;
	if (e->textured_wall)
	{
		draw_wall_textured(e);
		draw_floor_ceil_textured(e);
	}
	else
	{
		draw_skydome(e);
		draw_wall(e);
		draw_below_wall(e);
	}
}
Ejemplo n.º 11
0
int start(void)
{
  struct wrect_driver_info wrect_driver;
  struct wrect_driver_info wrect_driver2;
  struct WRECT rect;
  struct WRECT rect2;
  int win_x,win_y,win_w,win_h;

  wrect_init(&wrect_driver2,&rect2);
  draw_wall(&wrect_driver2,&rect2);

  win_x=5;
  win_y=5;
  win_w=200;
  win_h=150;

  wrect_create_pixmap(&wrect_driver,&rect,win_x,win_y,win_w,win_h);
  wrect_adjust_pixmap(&wrect_driver,&wrect_driver2);

  wrect_set_color(&wrect_driver,wrect_driver.colorcode_white);
  wrect_draw_boxfill(&wrect_driver,&rect,0,0,rect.x2,rect.y2);

  draw_window(&wrect_driver,&rect,0,0,win_w,win_h,"title");
//  draw_window(&rect,40,100,300,200,"Hello World");
//  wrect_set_color(0);
//  wrect_draw_text(&rect, 500,0,"hit key");

  wrect_set_color(&wrect_driver2, wrect_driver2.colorcode_white);
  wrect_set_bgcolor(&wrect_driver2, wrect_driver2.colorcode_black);
  wrect_draw_text(&wrect_driver2, &rect2, 0,0,"hit key");

//  memcpy(wrect_driver2.videobuff,wrect_driver.videobuff,vbsize);
  wrect_draw_pixmap(&wrect_driver2, &rect2, 
		win_x,win_y,win_w,win_h, wrect_driver.videobuff);
  keyboard_getcode();

  vga_set_videomode(&wrect_driver, VGA_MODE_TEXT80x25,1);
  return 0;
}
Ejemplo n.º 12
0
void draw_game_elements()
{
	draw_ball(ball_x,ball_y, green);
	for (int i = 0; i < NUM_WALLS; i++)
		draw_wall(wall_y[i],wall_gap_x[i], wall_color);
}
Ejemplo n.º 13
0
void compoe_sala(void){
  GLUquadricObj *quadric;

  

  /* inicia a composicao da sala */
  sala = glGenLists(1);
  glNewList(sala, GL_COMPILE);

  quadric = gluNewQuadric();

  //janela sobre a porta
  glPushMatrix();
  glColor3f(1,1,1);
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, 7.5, 15.5);
  //espessura, altura, largura
  glScalef (0.1, 1.0, 1.5);
  glutWireCube (4.0);
  glPopMatrix();



  //janela do lado da janela sobre a porta
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, 7.5, 11.2);
  //espessura, altura, largura
  glScalef (0.1, 1.0, 0.5);
  glutWireCube (4.0);
  glPopMatrix();

  //janela lateral do lado da porta
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, -0.2, 11.2);
  //espessura, altura, largura
  glScalef (0.1, 2.68, 0.5);
  glutWireCube (4.0);
  glPopMatrix();

  //janela lateral em baixo da janela lateral do lado da porta
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, -7.8, 11.2);
  //espessura, altura, largura
  glScalef (0.1, 1.0, 0.5);
  glutWireCube (4.0);
  glPopMatrix();

  //tela do projetor
  //glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  //glTranslatef (-16, -1.5, 18.5);
  //largura, altura, espessura
  //glScalef (3, 2.8, 0.05);
  //glutWireCube (5.0);
  //glPopMatrix();

  //quadro
  glPushMatrix();
  glColor3f(0.75,0.75,0.75);
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (-15.7, 1., 18.5);
  //largura, altura, espessura
  glScalef (4, 1.5, 0.05);
  glutSolidCube (5.0);
  glPopMatrix();


  //teto
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (-14.85, 10.0, -6.0);
  //largura, altura, espessura
  glScalef (10.05, 0.1, 10);
  glutWireCube (5.0);
  glPopMatrix();


	// PISO	 COM TEXTURA
	glColor3f(1,1,1);
	
	draw_wall(20, -9.5, 20,
		  -35, -9.5, 20,
		  -35, -9.5, -40,
		   20	, -9.5, -40, 1); 

  glColor3f(0,0,1.0);
  compoe_grade();
  
  glColor3f(1.0,1.0,1.0);

	glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);

	glBindTexture(GL_TEXTURE_2D, texture_id[0]);

	  compoe_parede_exterior();
	  compoe_parede_entrada();
	  compoe_parede_quadro_ar();	
    compoe_janelas_sol();
    compoe_janelas_entrada();

	glDisable(GL_TEXTURE_GEN_S);
  glDisable(GL_TEXTURE_GEN_T);
  glBindTexture(GL_TEXTURE_2D, 0);

  compoe_biros_esquerdo();
  compoe_biros_direito();  

  glColor3f(0,0,0);
  compoe_computador_esq();
  compoe_computador_dir();

  glColor3f(1,1,1);
  
  compoe_cadeiras();

  glEndList();
}
Ejemplo n.º 14
0
void compoe_computador_dir(void){

  GLUquadricObj *quadric;
  // inicia a composicao do computador
  comp_dir = glGenLists(1);
  glNewList(comp_dir, GL_COMPILE);
  quadric = gluNewQuadric();
  //gluQuadricTexture(quadric, GL_TRUE);

  GLfloat lado, atras;
  //compoe computador do lado da porta, 4 colunas
  for(int i = 0; i<4; i++){
    atras = i * 10.0;
    //3 computadores lado a lado
    for(int j=0; j<3; j++){
      lado = j * 6.0;

      //base tela
      quadric = gluNewQuadric();
      gluQuadricDrawStyle(quadric, GLU_FILL);
      gluQuadricOrientation(quadric, GLU_INSIDE); 
      glPushMatrix();  
      //tras/frente - direita/esquerda - cima/baixo 
      glRotatef(90,1,0,0);
      glTranslatef (-19-lado, 6.0-atras, 3.9);    
      SOLID_CLOSED_CYLINDER(quadric, 1., 1., 0.15, 30, 1)
      gluDeleteQuadric(quadric);
      glPopMatrix();

      //apoio tela
      quadric = gluNewQuadric();
      gluQuadricDrawStyle(quadric, GLU_FILL);
      gluQuadricOrientation(quadric, GLU_INSIDE);
      glPushMatrix();   
      glRotatef(90,1,0,0);  
      glTranslatef (-19-lado, 6.8-atras, 2.0);
      //tras/frente - direita/esquerda - cima/baixo 
      SOLID_CLOSED_CYLINDER(quadric, 0.25, 0.25, 2., 30, 1)
      gluDeleteQuadric(quadric);
      glPopMatrix();

      //tela
      glPushMatrix();
      //tras/frente - cima/baixo - direita/esquerda 
      glTranslatef (-19-lado, -1.7, 6.5-atras);
      glScalef (3., 3., 0.2);
      glutSolidCube (1.0);
      glPopMatrix();

      glColor3f(1,1,1);
      draw_wall(-17.7-lado, -0.3, 6.35-atras,
      -20.3-lado, -0.3, 6.35-atras,
      -20.3-lado, -3, 6.35-atras,
      -17.7-lado, -3, 6.35-atras, 5);

      glColor3f(0.2,0.2, 0.2); 

      //cpu
      glPushMatrix();
      //tras/frente - cima/baixo - direita/esquerda 
      glTranslatef (-21.3-lado, -2.8, 6.0-atras);
      glScalef (1., 3., 3.);
      glutSolidCube (1.0);
      glPopMatrix();


      draw_wall(-21.8-lado, -1.3, 4.45-atras,
      -20.8-lado, -1.3, 4.45-atras,
      -20.8-lado, -4, 4.45-atras,
      -21.8-lado, -4, 4.45-atras, 6); 

      //teclado

      glColor3f(0.5,0.5, 0.5);


      glPushMatrix();
      //tras/frente - cima/baixo - direita/esquerda 
      glTranslatef (-18.7-lado, -4.0, 4.0-atras);
      glScalef (2.9, 0.2, 1.2);
      glutSolidCube (1.0);
      glPopMatrix();

      draw_wall(-17.3-lado, -3.89, 4.5-atras,
      -20.1-lado, -3.89, 4.5-atras,
      -20.1-lado, -3.89, 3.4-atras,
       -17.3-lado, -3.89, 3.4-atras, 4); 


      glColor3f(0.15,0.15,0.15);

       

      //mouse
      quadric = gluNewQuadric();
      gluQuadricDrawStyle(quadric, GLU_FILL);
      gluQuadricOrientation(quadric, GLU_INSIDE);
      glPushMatrix();
      //tras/frente - cima/baixo - direita/esquerda 
      glTranslatef (-21-lado, -4.1, 4.0-atras);
      gluSphere(quadric, 0.25, 30,15);
      gluDeleteQuadric(quadric);
      glPopMatrix();
    }
  }
} 
Ejemplo n.º 15
0
// Main loop. 
void main_app_loop()
{
    if (current_screen == SCREEN_GAMEPLAY)
	{
	    // Find out how long the processor has been active (since boot or since sleep)
	    time_now_ms = pulse_get_millis();
	
	    // Check if it's been at least 10 ms since the box was last drawn
	    if (time_now_ms - time_last_box_drawn_ms >= game_speed) 
	    {	
		    score++;
		    
		    // Change the color and speed up the walls when certain scores are reached
		    switch(score) 
			{
			    case 800:	
					wall_color = teal;
					game_speed-=2;
				    break;
			    case 1600:	
					wall_color = blue;
					game_speed-=2;
				    break;
				case 2400:	
					wall_color = purple;
					game_speed-=2;
				    break;
				case 3200:	
					wall_color = pink;
					game_speed-=2;
				    break;
				case 4000:	
					wall_color = orange;
					game_speed-=2;
				    break; 
				case 4800:	
					wall_color = red;
					game_speed-=2;
				    break;            
			} 
		    
	        // Erase the old ball and walls by drawing over them
	        draw_ball(ball_x,ball_y, COLOR_BLACK24);
			for (int i = 0; i < NUM_WALLS; i++)
				draw_wall(wall_y[i],wall_gap_x[i], COLOR_BLACK24);
	
			// Move the ball based on user input
			if(press && ball_x < SCREEN_WIDTH - BALL_SIZE)
				ball_x++;
			else if (!press && ball_x > 0)
				ball_x--;
	        
	        // Move the walls up
			for (int i = 0; i < NUM_WALLS; i++)
				move_wall(i);
			
			// Check for collisions between the ball and the wall
			bool collision = false;
			for (int i = 0; i < NUM_WALLS; i++)
			{
				if ((ball_y == wall_y[i] - BALL_SIZE + 1 || ball_y == wall_y[i] - BALL_SIZE)&& (ball_x < wall_gap_x[i] || ball_x >  wall_gap_x[i] + GAP_WIDTH - BALL_SIZE))
				{
					ball_y = wall_y[i] - BALL_SIZE;
					collision = true;
				}
			}

			// check if ball reached the top 
			if (ball_y == start_y)
					game_over();
			else 
			{
				if (!collision && ball_y < SCREEN_HEIGHT-BALL_SIZE-1)
					ball_y = (ball_y + 1);
				
		        // Draw the new box and walls
				draw_game_elements();
	
				// update the time_last_box_draw_ms variable
		        time_last_box_drawn_ms = time_now_ms;
			}
	    }
	}
	else if (current_screen == SCREEN_CLOCK)
		pulse_get_time_date(&current_time);
}
Ejemplo n.º 16
0
void display(void){
  glEnable(GL_DEPTH_TEST);
  
  glDepthMask(GL_TRUE);
  glClearColor(0.5,0.5,0.5,0.5);
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  
  glPushMatrix();

  /* calcula a posicao do observador */
  obs[0]=raioxz*cos(2*PI*tetaxz/360);
  obs[2]=raioxz*sin(2*PI*tetaxz/360);

  gluLookAt(obs[0],obs[1],obs[2],look[0],look[1],look[2],0.0,1.0,0.0);

  glCallList(sala);
  glCallList(biros_esq);
  glCallList(biros_dir);
  glCallList(comp_esq);
  glCallList(comp_dir);
  glCallList(janelas_sol);
  glCallList(janelas_entrada);
  glCallList(grade);
  glCallList(cadeiras);

  init_lighting();


  //porta
  glColor3f(1,1,1);
  glPushMatrix();

  
  
  //eixo de rotação
  glTranslatef (4.3, -2.4, 18.25);
  glRotatef ((GLfloat) eixoy, 0.0, 1.0, 0.0);


    draw_wall(0.21, 7.6, 0.25,
    0.21, 7.6, -5.7,
    0.21, -7, -5.7,
    0.21, -7, 0.25, 8);

    draw_wall(-0.21, 7.6, 0.25,
    -0.21, 7.6, -5.7,
    -0.21, -7, -5.7,
    -0.21, -7, 0.25, 8);


  glTranslatef (-4.3, 2.4, -18.25);

  glTranslatef (4.3, -2.4, 15.5);
  //espessura, altura, largura
  glScalef (0.1, 3.8, 1.5);
  
  glutSolidCube (4.0);

  glPopMatrix();
  glPopMatrix();  





  glutSwapBuffers();
}
Ejemplo n.º 17
0
void
draw_maze(void)
{
  Point2 *p;
  int i, j, m, n;
  GLfloat x1, y1;
  /* draw the interior edges */
  for (i=0; i<edges; i++) {
    if (edge[i].draw == TRUE) {
      p = vertex + edge[i].vertex1;
      x1 = p->x;
      y1 = p->y;
      p = vertex + edge[i].vertex2;
      draw_wall(x1,y1,p->x,p->y);
    }
  }
  /* draw the perimeter edges */
  for (i=0; i<perimeters; i++) {
    if (perimeter[i].draw == TRUE) {
      p = vertex + perimeter[i].vertex1;
      x1 = p->x;
      y1 = p->y;
      p = vertex + perimeter[i].vertex2;
      draw_wall(x1,y1,p->x,p->y);
    }
  }
  
  
  GLfloat mat_specular[]={0.0, 0.0, 0.0, 1.0};
  GLfloat mat_diffuse[]={0.0, 0.5, 0.0, 1.0};
  GLfloat mat_ambient[]={1.0, 1.0, 1.0, 1.0};
  GLfloat mat_shininess=500.0;
  
  glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
  glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
  glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
  glMaterialf(GL_FRONT, GL_SHININESS, mat_shininess);

  //Draw floor
  float xstart = -(w*wall_spacing)/2;
  float ystart = -(h*wall_spacing)/2;
  
  float xtot = w*wall_spacing;
  float ytot = h*wall_spacing;
  glBegin(GL_QUADS);
  
  int subDivs = 1000;
  
  float dx = xtot/subDivs;
  float dy = ytot/subDivs;
  for(i=0;i<subDivs;i++) {
	  for(j=0;j<subDivs;j++) {
      glNormal3f(0.0,0.0,1.0);
		    glVertex3f(xstart + dx*i, ystart + dy*j, 0);
			glTexCoord2f((float)(i+0)/subDivs,(float)(j+0)/subDivs);
		    glVertex3f(xstart + dx*i, ystart + dy*(j+1), 0);
			glTexCoord2f((float)(i+0)/subDivs,(float)(j+1)/subDivs);
		    glVertex3f(xstart + dx*(i+1), ystart + dy*(j+1), 0);
			glTexCoord2f((float)(i+1)/subDivs,(float)(j+1)/subDivs);
		    glVertex3f(xstart + dx*(i+1), ystart + dy*j, 0);
			glTexCoord2f((float)(i+1)/subDivs,(float)(j+0)/subDivs);
	  }
  }
  
  glEnd();
  
  GLfloat mat_specular1[]={0.5, 0.0, 0.0, 1.0};
  GLfloat mat_diffuse1[]={0.5, 0.0, 0.0, 1.0};
  GLfloat mat_ambient1[]={1.0, 1.0, 1.0, 1.0};
  
  glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular1);
  glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient1);
  glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse1);
  glMaterialf(GL_FRONT, GL_SHININESS, 500);
  
  glBegin(GL_QUADS);
  {
	  glNormal3f(0.0,0.0,1.0);
	  glVertex3f(eyeX-.1,eyeY-.1,eyeZ);
	  glVertex3f(eyeX-.1,eyeY+.1,eyeZ);
	  glVertex3f(eyeX+.1,eyeY+.1,eyeZ);
	  glVertex3f(eyeX+.1,eyeY-.1,eyeZ);
  }
	glEnd();
	
	lightingMaterialReset();
}
Ejemplo n.º 18
0
void compoe_sala(void){
  GLUquadricObj *quadric;
  

  /* inicia a composicao da sala */
  sala = glGenLists(1);
  glNewList(sala, GL_COMPILE);

  quadric = gluNewQuadric();
  //gluQuadricTexture(quadric, GL_TRUE);
	
	
	
	
  //ar condicionado esquerdo
  //glEnable(GL_TEXTURE_GEN_S);
  //glEnable(GL_TEXTURE_GEN_T);

  //glBindTexture(GL_TEXTURE_2D, texture_id[1]);


  //glDisable(GL_TEXTURE_GEN_S);
  //glDisable(GL_TEXTURE_GEN_T);
  
  //glBindTexture(GL_TEXTURE_2D, 0);
  //glPushMatrix();
  //glColor3f(1,1,1);
  //tras/frente - cima/baixo - direita/esquerda
  //glTranslatef (2.0, 7.5, -30.5);
  //espessura, altura, largura
  //glScalef (0.8, 0.4, 0.15);
  //glBindTexture(GL_TEXTURE_2D, texture_id[1]);
  //glutSolidCube (10.0);
  //glPopMatrix();
  //glDisable(GL_TEXTURE_GEN_S);
  //glDisable(GL_TEXTURE_GEN_T);
	
  //glBindTexture(GL_TEXTURE_2D, 0);




  //janela sobre a porta
  glPushMatrix();
  glColor3f(1,1,1);
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, 7.5, 15.5);
  //espessura, altura, largura
  glScalef (0.1, 1.0, 1.5);
  glutWireCube (4.0);
  glPopMatrix();



  //janela do lado da janela sobre a porta
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, 7.5, 11.2);
  //espessura, altura, largura
  glScalef (0.1, 1.0, 0.5);
  glutWireCube (4.0);
  glPopMatrix();

  //janela lateral do lado da porta
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, -0.2, 11.2);
  //espessura, altura, largura
  glScalef (0.1, 2.68, 0.5);
  glutWireCube (4.0);
  glPopMatrix();

  //janela lateral em baixo da janela lateral do lado da porta
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (4.3, -7.8, 11.2);
  //espessura, altura, largura
  glScalef (0.1, 1.0, 0.5);
  glutWireCube (4.0);
  glPopMatrix();

  //tela do projetor
  //glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  //glTranslatef (-16, -1.5, 18.5);
  //largura, altura, espessura
  //glScalef (3, 2.8, 0.05);
  //glutWireCube (5.0);
  //glPopMatrix();

  //quadro
  glPushMatrix();
  glColor3f(0.75,0.75,0.75);
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (-15.7, 1., 18.5);
  //largura, altura, espessura
  glScalef (4, 1.5, 0.05);
  glutSolidCube (5.0);
  glPopMatrix();


  //teto
  glPushMatrix();
  //tras/frente - cima/baixo - direita/esquerda
  glTranslatef (-14.85, 10.0, -6.0);
  //largura, altura, espessura
  glScalef (10.05, 0.1, 10);
  glutWireCube (5.0);
  glPopMatrix();


/*
  //piso 

  //glEnable(GL_TEXTURE_GEN_S);
  //glEnable(GL_TEXTURE_GEN_T);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
  glBindTexture(GL_TEXTURE_2D, textura_plano);
  glEnable(GL_TEXTURE_2D);
	glBegin(GL_QUADS);
		glTexCoord2f(0, 0); glVertex3f(-1, -1, -1);
		glTexCoord2f(1, 0); glVertex3f(1, -1, -1);
		glTexCoord2f(1, 1); glVertex3f(1, 1, -1);
		glTexCoord2f(0, 1); glVertex3f(-1, 1, -1);
        glEnd();
	glDisable(GL_TEXTURE_2D);
 
  glColor3f(0.85,0.85,0.85);
  //tras/frente - cima/baixo - direita/esquerda
 glPushMatrix();
  glTranslatef (-14.85, -10.0, -6.0);
  //largura, altura, espessura
  glScalef (10.05, 0.1, 10);
  //glBindTexture(GL_TEXTURE_2D, texture_id[texture_floor]);
  glutSolidCube (5.0);
  glPopMatrix();
  //glDisable(GL_TEXTURE_GEN_S);
  //glDisable(GL_TEXTURE_GEN_T);*/

/*//textura do chao 1 (com quadrado)
draw_wall(-55.0f, -25, -25.0f,
      -55.0f, -25,  25.0f,
      55.0f, -25,  25.0f,
      55.0f, -25, -25.0f,0);*/

	//glBindTexture(GL_TEXTURE_2D, texture_id[0]);

	// PISO	 COM TEXTURA
	glColor3f(1,1,1);
	
	draw_wall(20, -9.5, 20,
		  -35, -9.5, 20,
		  -35, -9.5, -40,
		   20	, -9.5, -40, 1); 

 	/*// piso
 	glBindTexture(GL_TEXTURE_2D, texture_id[1]);

	compoe_piso();
  
        glBindTexture(GL_TEXTURE_2D, 0);*/



//  glEnable(GL_TEXTURE_GEN_S);
  //glEnable(GL_TEXTURE_GEN_T);

  //glBindTexture(GL_TEXTURE_2D, texture_id[3]);

  //compoe_cadeiras();
  //glDisable(GL_TEXTURE_GEN_S);
  //glDisable(GL_TEXTURE_GEN_T);
  //glBindTexture(GL_TEXTURE_2D, 0);

  glColor3f(0,0,1.0);
  compoe_grade();
  
  glColor3f(1.0,1.0,1.0);

	  glEnable(GL_TEXTURE_GEN_S);
          glEnable(GL_TEXTURE_GEN_T);

	  glBindTexture(GL_TEXTURE_2D, texture_id[0]);

	  compoe_parede_exterior();
	  compoe_parede_entrada();
	  compoe_parede_quadro_ar();	
    compoe_janelas_sol();
    compoe_janelas_entrada();

   // compoe_cadeiras();

	  glDisable(GL_TEXTURE_GEN_S);
          glDisable(GL_TEXTURE_GEN_T);
          glBindTexture(GL_TEXTURE_2D, 0);

  compoe_biros_esquerdo();
  compoe_biros_direito();  

  glColor3f(0,0,0);
  compoe_computador_esq();
  compoe_computador_dir();

  glColor3f(1,1,1);
  


  glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);
  glBindTexture(GL_TEXTURE_2D, texture_id[3]); 
  
  compoe_cadeiras();

  glDisable(GL_TEXTURE_GEN_S);
  glDisable(GL_TEXTURE_GEN_T);
  
  glBindTexture(GL_TEXTURE_2D, 0);

  glEndList();
}