import javax.media.opengl.GL; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLJPanel; import javax.media.opengl....">
Home » Source Code » escena opengl

escena opengl

yavi2
2013-09-18 11:28:16
The author
View(s):
Download(s): 0
Point (s): 1 
Category Category:
OpenGLOpenGL JavaJava

Description

space:nowrap;">

import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLJPanel;
import javax.media.opengl.glu.GLU;
import javax.swing.JFrame;
//
public class Escena implements GLEventListener 
{
double ancho = 250.0d;
double alto = 275.0d;
static GLU glu = new GLU();
    //
    @Override
public void init(GLAutoDrawable drawable) 
{ GL gl = drawable.getGL();
gl.glMatrixMode( GL.GL_PROJECTION );
gl.glLoadIdentity();
//
glu.gluOrtho2D( 0.0, ancho, 0.0, alto );
        // gl.glOrtho( 0.0, ancho, 0.0, alto, 0.0, 0.0);
        //
        gl.glMatrixMode( GL.GL_MODELVIEW );
gl.glLoadIdentity();
//
gl.glEnable(GL.GL_RGB);
        gl.glClearColor( 0.25f, 0.5f, 0.0f, 0.5f);
}
    
    @Override
public void display(GLAutoDrawable drawable) 
{ GL gl = drawable.getGL();
   gl.glClear(GL.GL_COLOR_BUFFER_BIT);   
   //    
   mi_escena( gl );    
   //
   gl.glFlush();
}
/**
* @param args
*/
public static void main(String[] args) 
{
JFrame.setDefaultLookAndFeelDecorated(true);
// TODO Auto-generated method stub
/* Primero se crea el objeto JFrame */
JFrame miMarco = new JFrame("Escena.java");
/* Se le otorga un tamaño de la ventana */
miMarco.setSize( 508, 530 );
/* Se ubica la ventana */
   miMarco.setLocation(100, 100);

/* Nos aseguramos que al cerrar la ventana el programa finalice */
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

/* Se crea el objeto GLJPanel */
GLJPanel miPanel = new GLJPanel( );


Escena A = new Escena();
/* Indicamos que el GLJPanel detecte los eventos del openGL */
miPanel.addGLEventListener( A );

/* A continuacion insertamos el GLJPanel en el JFrame */
miMarco.add( miPanel );
/* Hacemos visible el elemento de mayor nivel */
miMarco.setVisible(true);
}

//
@Override
public void displayChanged(GLAutoDrawable arg0, boolean arg1, boolean arg2) {
// TODO Auto-generated method stub
}

@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int h, int w) 
{
GL gl = drawable.getGL();

gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        glu.gluOrtho2D(0.0, w, 0.0, h);
        //
        gl.glMatrixMode(GL.GL_MODELVIEW);
        gl.glLoadIdentity();
        gl.glViewport(0, 0, w, h);    
}

public void mi_escena(GL gl )
{ //

dibuja_cielo( gl );
//
dibuja_nubes( gl );
//
   dibuja_arbusto( gl );
   //
dibuja_linea( gl );
        //
dibuja_bloques( gl );
//
dibuja_moneda( gl );
//
dibuja_piso( gl );
//
dibuja_tubo( gl );
}

public void dibuja_cielo( GL gl )
{
gl.glColor3ub( (byte) 215, (byte) 235, (byte) 240);
gl.glBegin(GL.GL_POLYGON);  
gl.glColor3ub( (byte) 255, (byte) 255, (byte) 255);
gl.glVertex2i( 0 , 100  );
gl.glColor3ub( (byte) 200, (byte) 200, (byte) 200);
gl.glVertex2i( 0 , 500  );
gl.glColor3ub( (byte) 200, (byte) 200, (byte) 200);
gl.glVertex2i( 500 , 500  );
gl.glColor3ub( (byte) 255, (byte) 255, (byte) 255);
gl.glVertex2i( 500 , 100  );
gl.glEnd();
}

public void dibuja_nubes( GL gl )
{ int nro = 25;
int radio = 23;
int X[] =new int[6];
int Y[] =new int[6];

X[1] = 12;  X[2] = 35;  X[3] = 8;  X[4] = 55;  X[5] = 77; 
Y[1] = 445; Y[2] = 425; Y[3] = 425; Y[4] = 455; Y[5] = 425; 

   for(int a=0;a<X.length ;a++)
   { // Dibuja circulo 
            gl.glBegin(GL.GL_POLYGON);
            { gl.glColor3ub( (byte) 240 , (byte) 255, (byte) 250);
                for (int i = 0; i <= nro; i++) 
                {
                    float theta = (float) (i * Math.PI * 2) / nro;
                    gl.glVertex2i((int) ( radio * Math.sin(theta)) + X[a], (int)( radio * Math.cos(theta)) + Y[a]);
                }
                //
            }
            gl.glEnd();
            //
   }
}
public void dibuja_arbusto( GL gl )
{ int nro = 75; 
int x = 0; int y = 93;

   for(int a=0;a<=11;a++)
   {
            gl.glBegin(GL.GL_POLYGON);
            { gl.glColor3ub( (byte) 86, (byte) 155, (byte) 50);
                for (int i = 0; i <= nro; i++) 
                {
                    float theta = (float) (i * Math.PI * 2) / nro;
                    gl.glVertex2i((int) ( 25 * Math.sin(theta)) + x, (int)(25 * Math.cos(theta)) + y);
                }
            }
            gl.glEnd();
            //
            x=x+45;
   }
   //
   x = 0;  y = 93;
   for(int a=0;a<=11;a++)
   { // Dibuja circulo 
    gl.glLineWidth(1.0f);
            gl.glBegin(GL.GL_LINE_STRIP);
            { gl.glColor3ub( (byte) 15, (byte) 45, (byte) 0);
                for (int i = 0; i <= nro; i++) 
                {
                    float theta = (float) (i * Math.PI * 2) / nro;
                    gl.glVertex2i((int) ( 25 * Math.sin(theta)) + x, (int)(25 * Math.cos(theta)) + y);
                }
            }
            gl.glEnd();
            //
            x=x+45;
   }
//    
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 86, (byte) 155, (byte) 50);
gl.glVertex2i( 0 , 85  );
gl.glVertex2i( 0 , 102  );
gl.glVertex2i( 490 , 102  );
gl.glVertex2i( 490 , 85  );
gl.glEnd();
}

public void dibuja_linea(  GL gl  )
{ gl.glColor3ub( (byte) 0, (byte) 0, (byte) 25);
gl.glLineWidth(2);
       gl.glBegin(GL.GL_LINES);
gl.glVertex2i( 0  , 85 );
gl.glVertex2i( 750 , 85 );
gl.glEnd();
}

public void dibuja_bloques( GL gl )
{ // bloques
int x = 0;
int y = 20;

for(int i=0;i<=4;i++)
{
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 183, (byte) 115, (byte) 44);  
gl.glVertex2i( x, 225);
gl.glVertex2i( x, 240 );
gl.glVertex2i( y, 240);
gl.glVertex2i( y, 225 );
gl.glEnd();
//
gl.glLineWidth(1.0f);
       gl.glBegin(GL.GL_LINE_LOOP);
       {   gl.glColor3ub( (byte) 55, (byte) 55, (byte) 55);
       gl.glVertex2i( x, 225);
gl.glVertex2i( x, 240 );
gl.glVertex2i( y, 240);
gl.glVertex2i( y, 225 ); 
       }
       gl.glEnd();
       //
       x = y+1;
       y = y+20;
}
//
x=0; y=20;
for(int i=0;i<=7;i++)
{
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 183, (byte) 115, (byte) 44);  
gl.glVertex2i( x, 205);
gl.glVertex2i( x, 220 );
gl.glVertex2i( y, 220);
gl.glVertex2i( y, 205 );
gl.glEnd();
//
gl.glLineWidth(1.0f);
       gl.glBegin(GL.GL_LINE_LOOP);
       {   gl.glColor3ub( (byte) 55, (byte) 55, (byte) 55);
       gl.glVertex2i( x, 205);
gl.glVertex2i( x, 220 );
gl.glVertex2i( y, 220);
gl.glVertex2i( y, 205 ); 
       }
       gl.glEnd();
       //
       x = y+1;
       y = y+20;
}

x=255; y=275;
for(int i=0;i<3;i++)
{
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 183, (byte) 115, (byte) 44);  
gl.glVertex2i( x, 275);
gl.glVertex2i( x, 290 );
gl.glVertex2i( y, 290);
gl.glVertex2i( y, 275 );
gl.glEnd();
//
gl.glLineWidth(1.0f);
       gl.glBegin(GL.GL_LINE_LOOP);
       {   gl.glColor3ub( (byte) 55, (byte) 55, (byte) 55);
       gl.glVertex2i( x, 275);
gl.glVertex2i( x, 290 );
gl.glVertex2i( y, 290);
gl.glVertex2i( y, 275 ); 
       }
       gl.glEnd();
       //
       x = y+1;
       y = y+20;
}

x=410; y=430;
for(int i=0;i<4;i++)
{
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 183, (byte) 115, (byte) 44);  
gl.glVertex2i( x, 175);
gl.glVertex2i( x, 190 );
gl.glVertex2i( y, 190);
gl.glVertex2i( y, 175 );
gl.glEnd();
//
gl.glLineWidth(1.0f);
       gl.glBegin(GL.GL_LINE_LOOP);
       {   gl.glColor3ub( (byte) 55, (byte) 55, (byte) 55);
       gl.glVertex2i( x, 175);
gl.glVertex2i( x, 190 );
gl.glVertex2i( y, 190);
gl.glVertex2i( y, 175 ); 
       }
       gl.glEnd();
       //
       x = y+1;
       y = y+20;
}
}

public void dibuja_piso( GL gl )
{
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 67, (byte) 114, (byte) 33);  
gl.glVertex2i( 0, 69);
gl.glVertex2i( 0, 84 );
gl.glVertex2i( 495, 84);
gl.glVertex2i( 495, 69 );
gl.glEnd();
//
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 139, (byte)94, (byte) 29);  
gl.glVertex2i( 0, 0);
gl.glVertex2i( 0, 70 );
gl.glVertex2i( 495, 69);
gl.glVertex2i( 495, 0 );
gl.glEnd();
}
//
public void dibuja_tubo( GL gl )
{
gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 106, (byte)127, (byte) 179);  
gl.glVertex2i( 265, 86);
gl.glVertex2i( 265, 105 );
gl.glVertex2i( 309, 105);
gl.glVertex2i( 309, 86 );
gl.glEnd();

gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 74, (byte)95, (byte) 149);  
gl.glVertex2i( 265, 105);
gl.glVertex2i( 260, 113 );
gl.glVertex2i( 314, 113);
gl.glVertex2i( 309, 105 );
gl.glEnd();

gl.glBegin(GL.GL_POLYGON);
gl.glColor3ub( (byte) 90, (byte)113, (byte) 179);  
gl.glVertex2i( 260, 113);
gl.glVertex2i( 260, 123 );
gl.glVertex2i( 315, 123);
gl.glVertex2i( 315, 113 );
gl.glEnd();

gl.glLineWidth(1.0f);
        gl.glBegin(GL.GL_LINE_STRIP);
        {   gl.glColor3ub( (byte) 55, (byte) 55, (byte) 55);
        gl.glVertex2i( 265, 86);
gl.glVertex2i( 265, 105 );
gl.glVertex2i( 309, 105);
gl.glVertex2i( 309, 86 );
        }
        gl.glEnd();
        //
        gl.glLineWidth(1.0f);
        gl.glBegin(GL.GL_LINE_STRIP);
        {   gl.glColor3ub( (byte) 55, (byte) 5, (byte) 55);
       gl.glVertex2i( 265, 105);
gl.glVertex2i( 260, 113 );
gl.glVertex2i( 314, 113);
gl.glVertex2i( 309, 105 );
        }
        gl.glEnd();
        //
        gl.glLineWidth(1.0f);
        gl.glBegin(GL.GL_LINE_STRIP);
        {   gl.glColor3ub( (byte) 55, (byte) 55, (byte) 55);
        gl.glVertex2i( 260, 113);
gl.glVertex2i( 260, 123 );
gl.glVertex2i( 315, 123);
gl.glVertex2i( 315, 113 );
        }
        gl.glEnd();
}

public void dibuja_moneda( GL gl )
{ int nro = 75;

gl.glBegin(GL.GL_POLYGON);
        { gl.glColor3ub( (byte) 255, (byte) 255, (byte) 10);
            for (int i = 0; i <= nro; i++) 
            {
                float theta = (float) (i * Math.PI * 2) / nro;
                gl.glVertex2i((int) ( 10* Math.sin(theta)) + 285, (int)(10 * Math.cos(theta)) + 309);
            }
        }
        gl.glEnd();
        
        gl.glBegin(GL.GL_LINE_STRIP);
        { gl.glColor3ub( (byte) 254, (byte) 210, (byte) 70);
            for (int i = 0; i <= nro; i++) 
            {
                float theta = (float) (i * Math.PI * 2) / nro;
                gl.glVertex2i((int) ( 10* Math.sin(theta)) + 285, (int)(10 * Math.cos(theta)) + 309);
            }
        }
        gl.glEnd();
        
        int x = 419;
        int y = 205;
        for(int a=0;a<4;a++)
        {
        gl.glBegin(GL.GL_POLYGON);
            { gl.glColor3ub( (byte) 255, (byte) 255, (byte) 10);
                for (int i = 0; i <= nro; i++) 
                {
                    float theta = (float) (i * Math.PI * 2) / nro;
                    gl.glVertex2i((int) ( 10* Math.sin(theta)) + x, (int)(10 * Math.cos(theta)) + y);
                }
            }
            gl.glEnd();
            
            gl.glBegin(GL.GL_LINE_STRIP);
            { gl.glColor3ub( (byte) 254, (byte) 210, (byte) 70);
                for (int i = 0; i <= nro; i++) 
                {
                    float theta = (float) (i * Math.PI * 2) / nro;
                    gl.glVertex2i((int) ( 10* Math.sin(theta)) + x, (int)(10 * Math.cos(theta)) + y);
                }
            }
            gl.glEnd();
            
            x = x + 20;
        }
}

}

Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
Pick.java7.21 kB2013-09-03|22:23
...
Sponsored links

Comments

(Add your comment, get 0.1 Point)
Minimum:15 words, Maximum:160 words
  • 1
  • Page 1
  • Total 1

escena opengl (2.66 kB)

Need 1 Point(s)
Your Point (s)

Your Point isn't enough.

Get 22 Point immediately by PayPal

Point will be added to your account automatically after the transaction.

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more Points

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D