2014-02-21 47 views
0

我正在学习使用Java的Computer Graphics。我想知道,在学习JOGL之前我应该​​学习Java2D还是应该学习JOGL(它也可以处理3D图形)?这(我希望)不是基于意见的问题,因为我正在寻找一条正确的道路。换个角度来看,我的问题是:如果JOGL具有Java Graphics 2D库,那么它有什么意义?使用Java Graphics2D vs JOGL

注意:我的最终目标是能够为商业应用程序开发图形。

+0

如果您对计算机图形学没有经验,我强烈建议从'Graphics2D'开始,您可以用它做很多。当您准备尝试更高级的想法时,包括更高级的2D和基本3D,转到专用库 - 恕我直言。Graphics2D是Java/Swing绘画引擎的默认实现,它在各个平台上进行了标准化并设计出了盒子,JOGL专门为特定目的绑定了特定的渲染引擎。每个都有它的地方,你需要根据你的要求来决定 – MadProgrammer

回答

2

“商业应用程序”的含义并不完全清楚。你不是在谈论“电脑游戏业务”,是吗? ;-)

严重:几乎每个问题的形式“我应该使用X还是Y?”具有同种答案:

  1. “那要看是什么究竟你想做的事”,并
  2. 主观的。

Graphics2D这个类是一个相当高层次的抽象,用几行代码就可以做你的第一次自定义绘画操作。他们很直观。你想用Graphics2D画一条线?那么,请致电graphics.drawLine(0,0,100,100);。你很快就会有成功的感觉。开始使用的基本代码在http://docs.oracle.com/javase/tutorial/uiswing/painting/中进行了简要总结,并且从http://docs.oracle.com/javase/tutorial/2d/geometry/index.html和一些幻想中您已经可以获得很好的效果。

OpenGL是另一个世界。首先它的重点是3D图形,这不是“只是2D的超集”。虽然你在技术上可以与OpenGL做2D图形,但这不是它的目的。它更接近于硬件,专门针对具有强大(和复杂)渲染技术的大型3D对象进行高性能管理。你想用OpenGL画一条线吗?那么,如果你想用纯粹的,现代的(!)OpenGL来做到这一点,它将包含100行代码,包括用GLSL编写的你自己的着色器程序。而如果没有数学和图形卡的深厚背景的某些字段,并没有阅读精心教​​程或书籍(如http://arcsynthesis.org/gltut/),你几乎可以在所有带来什么屏幕

所以总结吧,关于你的实际问题:

什么是具有了Java 2D图形库,如果JOGL是周围的点?

如果你想创造一些二维图纸,或许有些柱状图,饼状图或折线图,也许一些图片,你根本就不会使用OpenGL由于其复杂性。 Java2D是标准API的一部分,它是为这样的事情量身定做的(当然,为了不同的目的,仍然有不同的专用库)。如果你想做超越2D的任何事情,或者使用一些非常复杂的渲染效果,你必须使用OpenGL。