Название: Gráficos por computadora usando JOGL
Автор: Oscar Gabriel Caballero Martínez
Издательство: Bookwire
Жанр: Математика
isbn: 9786073050302
isbn:
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
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 СКАЧАТЬ