JOGL测试

来源:互联网 发布:网络用语棒子什么意思 编辑:程序博客网 时间:2024/06/05 14:22

JOGL是JAVA通过JNI的方式调用OpenGL的封装。

给出一个简单Demo(所需依赖,不是最小依赖,有多余的jar和DLL)

1、环境配置

依赖jar包:

指定native库

工程配置和javacv配置过程类似:指定依赖的jar包、dll库。

2、使用JOGL显示三角形

公共类:OneTriangle,进行OpenGL的初始化、绘图。

import com.jogamp.opengl.GL;import com.jogamp.opengl.GL2;import com.jogamp.opengl.glu.GLU;public class OneTriangle {    //初始化    protected static void setup( GL2 gl2, int width, int height ) {        gl2.glMatrixMode( GL2.GL_PROJECTION );        gl2.glLoadIdentity();        // coordinate system origin at lower left with width and height same as the window        GLU glu = new GLU();        glu.gluOrtho2D( 0.0f, width, 0.0f, height );        gl2.glMatrixMode( GL2.GL_MODELVIEW );        gl2.glLoadIdentity();        gl2.glViewport( 0, 0, width, height );    }    //渲染    protected static void render( GL2 gl2, int width, int height ) {        gl2.glClear( GL.GL_COLOR_BUFFER_BIT );        // draw a triangle filling the window        gl2.glLoadIdentity();        //绘制图元:三角形        gl2.glBegin( GL.GL_TRIANGLES );        //第一个点以及颜色        gl2.glColor3f( 1, 0, 0 );        gl2.glVertex2f( 0, 0 );        //第二个点以及颜色        gl2.glColor3f( 0, 1, 0 );        gl2.glVertex2f( width, 0 );        //第三个点以及颜色        gl2.glColor3f( 0, 0, 1 );        gl2.glVertex2f( width / 2, height );        gl2.glEnd();    }}

OneTriangleSwingGLCanvas:显示三角形

package com.test;import java.awt.BorderLayout;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import com.jogamp.opengl.GLAutoDrawable;import com.jogamp.opengl.GLCapabilities;import com.jogamp.opengl.GLEventListener;import com.jogamp.opengl.GLProfile;import com.jogamp.opengl.awt.GLCanvas;public class OneTriangleSwingGLCanvas {    public static void main( String [] args ) {        GLProfile glprofile = GLProfile.getDefault();        GLCapabilities glcapabilities = new GLCapabilities( glprofile );        final GLCanvas glcanvas = new GLCanvas( glcapabilities );//添加监听        glcanvas.addGLEventListener( new GLEventListener() {                        @Override            public void reshape( GLAutoDrawable glautodrawable, int x, int y, int width, int height ) {                OneTriangle.setup( glautodrawable.getGL().getGL2(), width, height );            }                        @Override            public void init( GLAutoDrawable glautodrawable ) {            }                        @Override            public void dispose( GLAutoDrawable glautodrawable ) {            }                        @Override            public void display( GLAutoDrawable glautodrawable ) {//调用渲染方法,进行渲染                OneTriangle.render( glautodrawable.getGL().getGL2(), glautodrawable.getSurfaceWidth(), glautodrawable.getSurfaceHeight() );            }        });//创建绘图窗口        final JFrame jframe = new JFrame( "JAVA下的OpenGL实现" );         jframe.addWindowListener( new WindowAdapter() {            public void windowClosing( WindowEvent windowevent ) {                jframe.dispose();                System.exit( 0 );            }        });//将GL渲染的图,显示到窗口中        jframe.getContentPane().add( glcanvas, BorderLayout.CENTER );        jframe.setSize( 640, 480 );        jframe.setVisible( true );    }}

结果展示:




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 肩膀抻着了怎么办妙招 右边肩膀抻着了怎么办 胳膊因劳累很痛怎么办 宝宝胳膊摔了疼怎么办 宝宝胳膊抻筋了怎么办 孕妇胳膊筋伤了怎么办 刚进公司就怀孕怎么办 撞到胳膊麻筋了怎么办 腰抻了怎么办多久能好 腰突然抻了一下怎么办 干活抻筋了 很疼怎么办 胳膊抻筋一动就疼怎么办 肩膀受风了很疼怎么办 开空调受风了怎么办 胳膊受风了疼怎么办 孩子胳膊抻筋了怎么办 胳膊被风吹了疼怎么办 月子里胳膊受风怎么办 受风了胳膊酸痛怎么办 胳膊受风了在家怎么办 手臂烧伤手肿了怎么办 胳膊里的筋疼怎么办 3岁胳膊背筋了怎么办 左胳膊筋一直疼怎么办 手臂突然筋扭了怎么办 胳膊扭了肿了怎么办 胖人走路磨大腿怎么办 脖子上长了个淋巴结怎么办 面部危险三角区长痘痘怎么办 儿童脖子上有淋巴结节怎么办 左侧颈根部淋巴结肿大怎么办 人的三角区肿了怎么办 刮三角区肿了怎么办 乳腺增生引起的腋窝淋巴结怎么办 右边脸比左边脸大怎么办 六个月宝宝脖子有点歪怎么办 大人的头偏了怎么办 宝宝脖子睡偏了怎么办 宝宝头歪向左边怎么办 一岁宝宝头歪怎么办 宝宝头往右边歪怎么办