Gráficos por computadora usando JOGL. Oscar Gabriel Caballero Martínez
Чтение книги онлайн.

Читать онлайн книгу Gráficos por computadora usando JOGL - Oscar Gabriel Caballero Martínez страница 6

Название: Gráficos por computadora usando JOGL

Автор: Oscar Gabriel Caballero Martínez

Издательство: Bookwire

Жанр: Математика

Серия:

isbn: 9786073050302

isbn:

СКАЧАТЬ alt="figura15"/>

      Figura 3.1 Forma general de un comando:

       Fuente: Elaboración propia.

      Donde gl especifica la librería que se usa, Comando depende de la función que se va a ocupar, n corresponde a las coordenadas homogéneas que se utilizan, i hace referencia al tipo de dato, que se especifica mejor en la tabla 3.1; y por último v, si los parámetros van en forma de un vector.

      Nota: en Java, a diferencia de los otros lenguajes que pueden manejar OpenGL, cuando se usa la instrucción v debe llevar un parámetro más, indicando la posición del arreglo donde comienza a leer los datos del vector. Su forma se verá más adelante en un ejemplo.

Letra Tipo Dato Tipo en Java Definición en OpenGL
s Entero 32 bits short GLshort
i Entero 64 bits int GLint
f Punto flotante 32 bits float GLfloat
d Punto floyante 64 bits double GLdouble

      Tabla 3.1 Tipos de Datos como parámetros.

       Fuente: Elaboración propia.

      Para ver un ejemplo generamos un programa llamado Puntos2D y las funciones involucradas en los cambios que hay que hacer son: init línea 2, display línea 15 y dibuja línea 23.

      1. @Override

      2. public void init(GLAutoDrawable glad) {

      3. final GL2 gl = glad.getGL().getGL2(); // Se genera un objeto de tipo

      3.1 // GL2

      4. final GLU glu = new GLU(); // Se genera un objeto de tipo GLU

      5. gl.glMatrixMode (GL2.GL_PROJECTION); // Se presenta el modo de

      6. // Proyección

      7. gl.glClearColor (1.0f, 1.0f, 1.0f, 0.0f); // Se coloca el color

      7.1 // blanco en el fondo

      8. // del canvas para dibujar. RGBA=(1,1,1,0)

      9. glu.gluOrtho2D (-10.0,10.0,-10.0,10.0); //Las dimensiones a trabajar

      9.1 // son de

      10. //-10 a 10 en x y de -10 a 10 en y

      11. gl.glMatrixMode(GL2.GL_MODELVIEW); // Se presenta el modo de vista

      12. gl.glLoadIdentity(); // Se coloca la matriz identidad para

      12.1 // operaciones.

      13. }

      14. @Override

      15. public void display(GLAutoDrawable glad) {

      16. final GL2 gl = glad.getGL().getGL2(); // Se genera un objeto de tipo

      16.1 // GL2

      17. gl.glClear(GL2.GL_COLOR_BUFFER_BIT); // Se limpia el buffer de color

      18. gl.glLoadIdentity(); // Se coloca la matriz identidad para operaciones

      19. dibuja(glad,0,0,2.5f);//Se invoca a la función dibuja, la “f”

      19.1 // significa para java

      20. // que el valor es de punto flotante

      21. gl.glFlush(); // Se limpian los bufferes

      22. }

      23. public void dibuja(GLAutoDrawable glad,float x1, float y1, float lado)

      24. {

      25. final GL2 gl = glad.getGL().getGL2(); // Se genera un objeto GL2

      26. gl.glPointSize(12f); // Se fija el tamaño del punto

      27. gl.glBegin(GL2.GL_POINTS); // Se comienzan a dibujar puntos

      28. gl.glColor3f(1, 0, 0); // Se activa el color rojo R=1

      29. gl.glVertex2f(x1-lado,y1-lado); // Se dibuja el punto en la

      29.1 // posición

      30. gl.glColor3f(0, 0, 1); // Se activa el color azul B=1

      31. gl.glVertex2f(x1-lado,y1+lado); // Se dibuja el punto en la

      31.1 // posición

      32. gl.glColor3f(0, 1, 0); // Se activa el color verde G=1

      33. gl.glVertex2f(x1+lado,y1+lado); // Se dibuja el punto en la

      33.1 //posición

      34. gl.glColor3f(0, 0, 0); // se desactivan todos los colores,

      34.1 // negro

      35. gl.glVertex2f(x1+lado,y1-lado); // Se dibuja el punto en la

      35.1 // posición

      36. gl.glEnd(); // Se termina de dibujar.

      37. }

      Código3.1 Puntos2D.java

figura16

      Figura 3.2 Salida del programa anterior

       Fuente: Elaboración propia.

      Hay que observar a los objetos GL2 en las líneas 3, 16 y 25, todos son generados en cada una de las funciones. Se les llaman variables (en el caso, son objetos) locales, ya que sólo van a ser reconocidas en las funciones que se utilizan. Cuando son generadas en la parte superior de las clases, son reconocidas por todas las funciones de la clase y se les llaman variables (en el caso, objetos) globales.

      Del código anterior hay que destacar lo siguiente: en la línea 26 se fija el tamaño del punto de 12 pixeles en la función glPointSize. En las líneas 29, 31, 33 y 35 se utiliza el método glVertex2f [TutorialOpenGL, 2016], cuyos parámetros son dos valores de punto flotante que representan la posición en dos dimensiones. Y en las líneas 28, 30, 32 y 34 el método glColor3f especifica el color para cada uno de los puntos a dibujar; los parámetros son la intensidad de los colores Rojo, Verde y Azul desde 0 a 1. En la línea 34 los parámetros son ceros, lo que significa que no hay intensidades de los tres colores, por lo tanto, hay una ausencia СКАЧАТЬ