【发布时间】:2013-10-05 13:16:06
【问题描述】:
我目前正在研究在使用 LWJGL 的应用程序中使用 Scala 和 Akka。众所周知,您不能真正在应用程序的主线程之外发出 OpenGL 调用。如果我想使用任何参与者进行渲染(例如,一个单一的主要参与者,它会耗尽渲染命令队列,或者有多个参与者可能随时发出任意 OpenGL 命令),这会带来一个问题,因为我还没有看到一种在特定线程上运行任何actor的方法。通过将特定参与者固定到线程,或通过指示参与者在某个时间点在特定线程上运行。 (a la Objective-C 的 performSelectorOnMainThread)
有没有办法将“渲染”actor 固定到主线程,或者让任何actor 在未来某个时候在主线程上运行,届时它将能够发出 OpenGL 调用? (甚至是其他一些解决方案,我对想法持开放态度)
【问题讨论】:
-
Akka 可能不是一个很好的用例。虽然它确实提供了您所要求的内容,但它仅用于单元测试。 doc.akka.io/docs/akka/2.2.1/scala/…
-
您可以在主线程中创建一个消息循环并简单地使用来自参与者的消息。它可能位于某种
Runnable的队列中。
标签: multithreading scala opengl akka