分类存档: jogl

决定放弃jogl

过去的几周里,使用jogl开发了wow的模型查看,解决了N多个问题,最终可以正确的显示模型,加载blp图片,动作及粒子效果。

现在已经决定放弃掉jogl,java并不是开发opengl的好方式。

目前我所能了解到的最好的方式是使用c/c++代码编译成平台相关的dll,然后由各平台上编写加载的loader调用opengl。

在未来的几天内,我将查看这方面的资源,并做出一个可以在android,ios上执行的样例。

jogl开发opengl不合适的理由

最近研究了两周jogl,过程痛苦无比。

得到的结论是,如果只限于java平台,可以去尝试用jogl开发。

如果要进行跨平台(pc,android,ios),最好的方式,还是使用c/c++编写,然后编译为对应平台的本地库,进行调用。

java语言中没有ubyte与ushort,uint,在图形学方面来讲真是非常不明智,你不会发现,有多少原有的图片格式及模型为了节省那一个字节的空间,大量的使用无符号型类型。可怜的java处理起来要痛苦多了。

jogl 输出当前视图模型矩阵的数值

FloatBuffer floatBuffer = FloatBuffer.allocate(16);
// 输出视图模型矩阵数值
gl.glGetFloatv(GL.GL_MODELVIEW_MATRIX, floatBuffer);
float[] floats = floatBuffer.array();
for (int m = 0; m < floats.length; m += 4) {
System.out.println(floats[0] + “\t” + floats[1] + “\t”
+ floats[2] + “\t” + floats[3]);
}

 

jogl sun.java2d.noddraw

使用jogl时,设置sun.java2d.noddraw=true,避免在DirectDraw与OpenGL来回切换导致的不可预知的行为.

 

The “sun.java2d.noddraw” property disables Java 2D’s use of DirectDraw on
Windows. This avoid any nasty interactions between DirectDraw and OpenGL, which
can cause application crashes, poor performance, and flickering. The property is only
needed if you’re working on a Windows platform.
Another useful command line option is “-Dsun.java2d.opengl=true” which switches
on the Java2D OpenGL pipeline. The pipeline provides hardware acceleration for
many Java 2D rendering operations (e.g. text, images, lines, fills, complex transforms,
composites, clips). It’s essential when JOGL’s GLJPanel class is employed as a
drawing surface (as explained below).