- 浏览: 161667 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
沙舟狼客:
为了方便使用可以配置到环境变量里面MINGW_HOME=C:\ ...
windows下用mingw32+sdl进行简单2d游戏开发(c语言) -
沙舟狼客:
如果安装autotools时不用gcccc相当于gcc的链接n ...
windows下用mingw32+sdl进行简单2d游戏开发(c语言) -
lirihong:
java中文乱码完全解决方案 ?? 高度很高,深度、全面度全 ...
java中文乱码完全解决方案 -
沙舟狼客:
非常适合想写windows游戏的菜鸟
windows下用mingw32+sdl进行简单2d游戏开发(c语言) -
xixilive:
噢喔~~语义全无
京东导航的jquery实现
1、jogl是什么?
jogl是Java OpenGL的简称,想真正的了解它,就需要了解OpenGL,OpenGL是Open Graphics Library,它是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库,请参考http://baike.baidu.com/view/9222.htm,他其实是一个命令的的集合,300多条,算不上编程语言,他最难的在于计算机图形学的知识,而jogl是用java通过jni调用,对openGL的一个封装,所以速度上并不比c慢多少,并且加上java特有的面向对象的特性,来开发游戏比直接用c有过之而无不及!
2、jogl的安装配置;
下载地址:如果去官方下载,就直接在他的svn中checkout下来,去里面的项目找, http://jogl .dev.java.net,
为了方便我直接上传了一份;
eclipse下配置:jar包放在build-path下,dll文件,可以在项目下建立个native文件夹,把jogl.jar的NativeLibraryLocation位置选中native就行了
3、验证配置,可以用下面代码
public class Validate { public static void main(String[] args) { try { System.loadLibrary("jogl"); System.out.println("正确配置"); } catch (Exception e) { System.out.println("没有正确配置:" + e.getMessage()); } } }
没有正确配置的话会有下面异常
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1030) at org.ligson.jogl.test.Validate.main(Validate.java:7)
4、OpenGL开发前需要知道的
OpenGL为了兼容各种环境,没有实现窗口,但是他画图又必须在窗口下画,在C库中依赖于glut,在Java中就依赖于swing了,所以第一步应该建立一个窗口extends JFrame,
5、先看一个Hello,World!
package org.ligson.jogl.test; import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.media.opengl.GL; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCanvas; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.swing.JFrame; public class Pointer extends JFrame implements GLEventListener, Runnable { // gl库的handler,相当于画笔 GL gl; // 画布,跟html5的Canvas一样, GLCanvas canvas; // 指定了一套OpenGL的功能:渲染内容必须支持,如色彩深度,以及立体是否已启用。 GLCapabilities capabilities; Thread thread = new Thread(this); public Pointer() { super("Demo4"); this.setSize(500, 500); this.setLocationRelativeTo(null); capabilities = new GLCapabilities(); canvas = new GLCanvas(capabilities); canvas.addGLEventListener(this); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); this.add(canvas, BorderLayout.CENTER); thread.start(); } @Override public void run() { while (true) { try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } canvas.display(); } } @Override public void display(GLAutoDrawable drawable) { gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glColor3f(1.0f, 0.0f, 0.0f); gl.glPointSize(10.0f); gl.glBegin(GL.GL_POINTS); gl.glVertex3f(50.0f, 50.0f, 50.0f); gl.glEnd(); gl.glFlush(); } @Override public void displayChanged(GLAutoDrawable drawable, boolean arg1, boolean arg2) { } @Override public void init(GLAutoDrawable drawable) { gl = drawable.getGL(); gl.glClearColor(0.3f, 0.3f, 0.3f, 1.0f); } @Override public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { if (h == 0) { h = 1; } int windowWidth; int windowHeight; gl.glViewport(0, 0, w, h); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); if (w <= h) { windowWidth = 250; windowHeight = 250 * h / w; } else { windowWidth = 250 * w / h; windowHeight = 250; } gl.glOrtho(0 - windowWidth, windowWidth, 0 - windowHeight, windowHeight, 250.0f, -250.0f); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); } public static void main(String[] args) { Pointer demo5 = new Pointer(); demo5.setVisible(true); } }
6、上面的hello,world吓住你了吗?太长了吧,我刚开始跟你一样!先说上面是干嘛的?他其实就是先空间画一个10.0f像素的点(glPonitSize(10.0f));了解几个函数
public void init(GLAutoDrawable drawable) {
初始化时调用,给GL 赋值
@Override public void display(GLAutoDrawable drawable) {
每次显示时都会调用的,他一般在一个线程里,不停的画,因为他只显示一次,当屏幕进行刷新时就没有了,
@Override public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {
当窗口大小进行改变时调用,初次显示也算,
@Override public void displayChanged(GLAutoDrawable drawable, boolean arg1, boolean arg2) {
显示改变时调用,,具体的不知道,我也没有用过
7、后续。。。。。。
- jogl.zip (1 MB)
- 描述: jogl常用jar包和dll库
- 下载次数: 226
发表评论
-
java中文乱码完全解决方案
2013-11-18 22:05 24301、代码编码全部用UTF8,特别是配置用的属性文件 2、J ... -
Highcharts动态曲线图(使用jna监视cpu使用率)
2012-01-10 22:30 92601、CPU使用率获取,因为我要用JNA调用,所以用c++调用w ... -
grails验证码插件-JCaptcha
2012-01-10 12:56 23731、安装 grails install-plugin jca ... -
jogl入门之简单的贪吃蛇
2012-01-05 13:43 20141、代码: package org.ligson.jo ... -
grails学习之自定义标签
2011-12-30 17:22 57831、在grails项目结构中有一个taglib文件夹(项目名/ ... -
加密机制的发展(JCE/JCA)
2011-12-23 17:56 4835一、对称密钥-------最原始的加密解密 对称 ... -
开发一个JCE的Provider
2011-12-23 13:42 44851、开发环境ubuntu+eclipse+openJDK ... -
enum还有人记得吗?
2011-12-21 15:42 1116enum其实挺好用的,特别是对于一些固定的东西! packa ... -
JNA入门1
2011-12-06 22:15 37111、jna是什么 jna是java native acces ... -
利用BC替换X509证书的公钥
2011-11-23 09:54 2252public static X509Certificate r ... -
利用BC的X509v3CertificateBuilder组装X509证书
2011-11-22 17:38 3894// 设置开始日期和结束日期 long year = 3 ... -
grails框架中webService插件的使用(axis2,cxf)
2011-09-17 22:40 3220一、cxf插件的使用: 1、运行命令: grails in ... -
Java直接发送邮件或写好的eml邮件
2011-08-03 13:50 1534import java.io.File; import ... -
利用bouncycastle组装X509证书
2011-08-02 19:02 9471CreateCert.java package com.se ... -
Java中对称密钥、非对称密钥和数字签名的用法
2011-04-16 12:21 32111、非对称密钥: package com.mysec; ... -
eclipse3.6 太阳神版 中文汉化插件
2011-04-09 20:00 1153经常用eclipse,但用多了英文版,突然间想找个新鲜感,于是 ... -
Java中的按位取反运算符,哪位能详解一下?
2011-03-14 23:29 2240最近面试遇到了这样一道题: System.out.print ... -
Java常见排序算法
2011-02-24 17:53 857package test; import java ... -
常见模式例子
2011-02-24 17:37 1019工厂模式 package login.sj; ... -
关于Java中各种修饰符与访问修饰符的说明
2011-02-24 15:05 1030类: 访问修饰符 修饰符 class 类名称 exte ...
相关推荐
以下是一个简单的Jogl入门例子,展示如何创建一个基本的OpenGL窗口并绘制一个红色的立方体: 1. 首先,导入必要的Jogl库: ```java import com.jogamp.opengl.GL2; import com.jogamp.opengl.GLAutoDrawable; ...
这个是我刚刚学JOGL的时候找到的一份资料,很适合JOGL的初学者,内容是E文的,但都是通俗易懂的,只要一点点英语基础就可以理解,现在JOGL的资料很少,希望对想学而又找不到资料的朋友有点帮助
在本篇【JOGL入门例子(八)---画机器人:活用长方体】中,我们将探讨如何使用Java OpenGL绑定库(JOGL)来创建一个3D机器人模型,特别是通过绘制长方体来构建机器人的各个部分。JOGL是Java平台上的OpenGL接口,允许...
在本篇博客“JAVA的OPENGL,JOGL入门例子(五)----充满能量的立体三维螺旋体”中,我们将探讨如何使用Java与OpenGL图形库JOGL(Java Bindings for OpenGL)来创建动态的3D图形。OpenGL是一个强大的跨平台图形库,而...
在本篇关于JAVA的OpenGL(JOGL)入门教程的第四部分中,我们将探索如何创建一个具有丰富视觉效果的螺旋体。OpenGL是一个强大的图形库,它允许程序员直接与GPU交互,生成高质量的2D和3D图形。JOGL是Java语言对OpenGL...
标题提到的"jogl简单入门例子"是针对初学者的一系列教程或示例代码,帮助快速理解和上手JOGL。这些例子可能涵盖了JOGL的基本概念、对象创建、渲染流程、纹理映射、变换操作、光照处理等方面,通过实践来巩固理论知识...
在JOGL入门例子(十四)中,我们可能会学习如何创建、使用和管理显示列表。这通常包括以下步骤: 1. **创建显示列表**:使用`glNewList()`函数指定列表的标识符,并设定开始定义列表的标志。 2. **定义列表**:在这...
【标题】"nehe-source JOGL学习代码"指的是一个基于Java和JOGL(Java Bindings...总之,"nehe-source JOGL学习代码"是一个宝贵的资源,可以帮助Java开发者快速入门OpenGL编程,通过实际操作和实践,提升3D图形编程能力。
提供的"OpenGL开发库2.0"文件可能包含头文件、库文件、示例代码、文档和其他资源,帮助开发者快速入门并充分利用OpenGL 2.0的功能。例如,头文件定义了API函数和常量,库文件则包含了实现这些功能的代码。示例代码是...
Java 3D交互式三维图形编程 pdf的书,...最新的1.6版本 已经发布到预览11 了,它和gogl项目在一起维护着,jogl更适合游戏(包括android),如果读者刚入门最好建立起一整套概念,然后便可从基本功出发更加渗入的学习。
LICENSE.TXT中通常会阐述软件的版权信息和使用条件,而README.TXT则可能包含快速入门指导和注意事项。 6. **DemoJOGL**、**DemoGL4Java**、**DemoJARFrameGrabber** 和 **jARToolKitforJava3D**: 这些目录很可能是...
本教程以“计算机室图形学3d”为主题,旨在为初学者提供3D图形基本程序的入门指南。 3D图形的基本概念: 1. **坐标系**:在3D图形中,我们使用笛卡尔坐标系,包括X、Y和Z轴,来定义物体的位置和方向。 2. **几何...
OpenGL编程入门通常包括以下几个步骤: 1. **环境配置**:安装必要的库和开发工具,如设置OpenGL驱动、集成开发环境(IDE)和JOGL库。 2. **基本概念**:理解OpenGL的上下文(Context)、窗口系统接口(Window ...
Diego通过Coursera提供的Java面向对象编程的一些入门代码。 安装 在Eclipse中导入该文件夹(“文件”->“导入”->“现有项目到工作区”,选择此文件夹,“完成”) 手动安装 如果导入不起作用,请执行以下步骤。 ...
在学习这些书籍时,读者可能会接触到OpenGL和Java Bindings for OpenGL (JOGL)的相关知识,因为Java 3D底层依赖于这些库来实现高性能的3D图形渲染。同时,理解基本的线性代数和向量几何也是学习3D编程的基础,因为...
模块文件夹包含用于与MOOC关联的编程分配的入门代码。 兴奋起来,创造事物! 安装在Eclipse中将该文件夹导入(“文件”->“导入”->“将现有项目导入工作区”,选择此文件夹,“完成”)。如果不起作用,请尝试(...
对于更高级的3D游戏,Java程序员通常会利用JMonkeyEngine、LWJGL( Lightweight Java Game Library)或 jogl(Java Bindings for OpenGL)这样的第三方库,这些库提供了与OpenGL或DirectX等底层图形API的接口,使...