TIPOS DE TEXTURAS UTILIZADAS EN GRAFICACIÓN
Otro aspecto importante en el mapeo de texturas es el filtrado, que sirve para que cada pixel tenga una textura diferente a los de su alrededor.
Los métodos más importantes son:
Filtrado Bilineal: Consiste en que la textura que se va a aplicar a un píxel sea una media de las de los pixeles que lo rodean en los ejes X Y.
Filtrado Trilineal: Consiste en un filtrado bilineal, pero ademas se hace una interpolación entre dos texturas empleadas para diferentes distancias. De esta manera, el cambio de una textura a otra es muy suave.
Filtrado Anisotrópico: Este es un filtrado trilineal que se aplica solamente a los objetos que estén visibles y no a toda la escena. De esta manera no se pierde velocidad.
´________________________________________________________________________________
SEMAFORO
CODIGO:
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int rad=100;
double ang=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0;
void inicializa(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-815.0, 1300.0, -615.0, 700.0);
}
void circuloc(int x, int y, int t, int radio)
{
int angulo=0;
glPointSize(t);
glBegin(GL_POINTS);
glVertex2f(x,y);
for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) *radio, y + cos(angulo) * radio);}
glEnd();
}
void circulo(int x, int y, int radio)
{
int angulo=0;
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x,y);
for (angulo=0;angulo<=360; angulo++)
{
glVertex2f(x + sin(angulo) *radio, y + cos(angulo) * radio);
}
glEnd();
}
void dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);
glColor3f(0.0 , 0.0 , 0.0);
glVertex2i(170,437);
glVertex2i(320,437);
glVertex2i(320,182);
glVertex2i(170,182);
glVertex2i(229,183);
glColor3f(5.0 , 9.0 , 3.0);
glVertex2i(260,183);
glVertex2i(260,-193);
glVertex2i(229,-193);
glEnd();
glColor3f(0.0,0.0,0.0);
circulo(247,226,34);
glColor3f(0.0,0.0,0.0);
circulo(247,302,34);
glColor3f(0.0,0.0,0.0);
circulo(247,381,34);
a=a+1; //velocidad
for(int j=1;j<=10000000;j++){}//pausa
if(a>1 && a<20)
{
glColor3f(1.0,0.0,0.0);
circulo(247,381,34);
}
if(a>20 && a<40)
{
glColor3f(0.0,1.0,0.0);
circulo(247,226,34);
}
if(a>40 && a<50)
{
glColor3f(1.0,1.0,0.0);
circulo(247,302,34);
}
if(a>55 && a<50)
{
glColor3f(1.0,1.0,0.0);
circulo(247,302,34);
}
if(a>60 && a<55)
{
glColor3f(1.0,1.0,0.0);
circulo(247,302,34);
}
if(a>60)
{
a=0;
}
glFlush();
glutSwapBuffers();
}
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); glutInitWindowSize(500,500);
glutInitWindowPosition(15,10);
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
_________________________________________________________________________________