{"id":36,"date":"2015-03-18T09:39:03","date_gmt":"2015-03-18T08:39:03","guid":{"rendered":"http:\/\/liceocuneo.it\/grafica\/?page_id=36"},"modified":"2015-11-11T19:19:10","modified_gmt":"2015-11-11T18:19:10","slug":"poligoni","status":"publish","type":"page","link":"https:\/\/liceocuneo.it\/grafica\/poligoni\/","title":{"rendered":"Poligoni"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-38\" src=\"https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/OpenGLProva.png\" alt=\"OpenGLProva\" width=\"416\" height=\"438\" srcset=\"https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/OpenGLProva.png 416w, https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/OpenGLProva-285x300.png 285w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/p>\n<p>Iniziamo creando un&#8217;applicazione\u00a0visuale, che serva da controllo della finestra di rendering,\u00a0con i pulsanti Show, Hide, Fullscreen, Start, Stop: tutti i\u00a0progetti che svilupperemo faranno sempre uso di una\u00a0finestra di controllo simile a questa.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-53\" src=\"https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/Main.png\" alt=\"Main\" width=\"239\" height=\"110\" \/><\/p>\n<p>Ricordandoci di aggiungere al progetto la libreria <strong>JOGL2<\/strong>,\u00a0scriviamo\u00a0le seguenti linee di codice e i gestori di evento associati ai 5 pulsanti; il listato dovrebbe essere simile al seguente:<\/p>\n<p><strong>Main.java<\/strong><\/p>\n<pre>public class Main extends javax.swing.JFrame {\r\n\r\n    GLWindow window;\r\n    FPSAnimator animator;\r\n    GLRenderer renderer;\r\n\r\n    public Main() {\r\n        [...]    \/\/ crea la JFrame e i bottoni\r\n\r\n        window = GLWindow.create(new GLCapabilities(GLProfile.getDefault()));   \/\/ crea la finestra di rendering\r\n        window.setTitle(\"OpenGL prova - GLWindow\");   \/\/ imposta il titolo\r\n        window.setSize(800, 600);                     \/\/ imposta la dimensione\r\n        renderer = new GLRenderer();                  \/\/ istanzia la classe GLRenderer\r\n        window.addGLEventListener(renderer);          \/\/ passa all'ascolatore di eventi l'oggetto renderer\r\n        animator = new FPSAnimator(window, 60, true); \/\/ istanzia la classe FPSAnimator, 60 \u00e8 la frequenza di rendering\r\n    }\r\n\r\n private void btnHideActionPerformed(java.awt.event.ActionEvent evt) { \r\n     window.setVisible(false);\r\n } \r\n\r\n private void btnShowActionPerformed(java.awt.event.ActionEvent evt) { \r\n     window.setVisible(true);\r\n } \r\n\r\n private void btnStartActionPerformed(java.awt.event.ActionEvent evt) { \r\n     animator.start();\r\n } \r\n\r\n private void btnStopActionPerformed(java.awt.event.ActionEvent evt) { \r\n     animator.stop();\r\n } \r\n\r\n private void btnFullscreenActionPerformed(java.awt.event.ActionEvent evt) { \r\n     window.setFullscreen(btnFullscreen.isSelected());\r\n }<\/pre>\n<p>Il disegno che si vuole realizzare viene definito all&#8217;interno del metodo <strong>display<\/strong> della classe <strong>GLRenderer<\/strong> che implementa l&#8217;interfaccia\u00a0<strong>GLEventListener<\/strong>. Nel nostro esempio disegniamo il triangolo con i tre vertici colorati con i 3 colori primari; il listato \u00e8 riportato di seguito.<\/p>\n<p><strong>GLRenderer.java<\/strong><\/p>\n<pre>public class GLRenderer implements GLEventListener {\r\n\r\n    @Override\r\n    public void init(GLAutoDrawable drawable) { }\r\n\r\n    @Override\r\n    public void dispose(GLAutoDrawable drawable) { }\r\n\r\n    @Override\r\n    public void display(GLAutoDrawable drawable) {\r\n        GL2 gl = drawable.getGL().getGL2();\r\n\r\n        gl.glClear(GL.GL_COLOR_BUFFER_BIT);   \/\/ cancella la finestra\r\n\r\n        gl.glBegin(GL.GL_TRIANGLES);\r\n        gl.glColor3f(1, 0, 0);   \/\/ il 1\u00b0 vertice \u00e8 rosso\r\n        gl.glVertex2d(-1, 0);\r\n        gl.glColor3f(0, 1, 0);   \/\/ il 2\u00b0 vertice \u00e8 verde\r\n        gl.glVertex2d(1, 0);\r\n        gl.glColor3f(0, 0, 1);   \/\/ il 3\u00b0 vertice \u00e8 blu\r\n        gl.glVertex2d(0, 1);\r\n        gl.glEnd();\r\n    }\r\n\r\n    @Override\r\n    public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { }\r\n\r\n}<\/pre>\n<p>Progetto Eclipse:\u00a0<a href=\"https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/Esempio2D.zip\">Esempio2D.zip<br \/>\n<\/a> (controllare nelle <strong>Referenced Libraries<\/strong> che i percorsi dei file <strong>gluegen-rt.jar<\/strong> e <strong>jogl-all.jar<\/strong> siano corretti)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Iniziamo creando un&#8217;applicazione\u00a0visuale, che serva da controllo della finestra di rendering,\u00a0con i pulsanti Show, Hide, Fullscreen, Start, Stop: tutti i\u00a0progetti che svilupperemo faranno sempre uso di una\u00a0finestra di controllo simile a questa. Ricordandoci di aggiungere al progetto la libreria JOGL2,\u00a0scriviamo\u00a0le &hellip; <a href=\"https:\/\/liceocuneo.it\/grafica\/poligoni\/\">Continua a leggere<span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":30,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-36","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/pages\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":0,"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/pages\/36\/revisions"}],"wp:attachment":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/media?parent=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}