java display使用方法_Java:openGL:JOGL:当我调用display()方法时,幕后会发生什么?...

看起来很奇怪,这是它应该工作的方式.

在幕后发生的事情是,当您创建的GLCanvas被绘制出来时,幕后JOGL正在做一大堆工作.它正在创建一个GLContext,并使其成为当前线程的GLCanvas的最新版本.只有在完成后才能进行渲染调用.尚未成为当前的GLContext或从中派生的GL对象对您没用.此外,GLContext仅为该线程设置为当前状态,并且在显示调用完成后立即变为非当前状态,因此挂起对它的引用或GL以供以后使用将不起作用.

几乎所有JOGL应用程序都以这种方式工作.您创建一个GLEventListener,并在其中实现display(),从GLAutoDrawable中提取GL并使用它来进行渲染调用.您不希望在任何其他位置进行渲染调用,只需要在paint()方法之外进行Graphics2D调用.大多数初学Java程序员都试图从paint方法之外进行绘制;这是类似的.如果你需要触发重绘,那么你就像使用Java2D一样:使用invalidate(). (您当然可以编写从display()方法调用的子方法,并将GL或GLAutoDrawable作为参数).

有一些方法可以让您专门创建GLContext并使其自己成为现实,但它们很少是必需的.在这里使用这种方法几乎总是更好.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值