Если независимость от платформы является соображением, Вы могли бы хотеть проверить jMonkeyEngine. Это - базирующийся 3D механизм графика сцены, записанный в Java.
public class HelloWorld extends SimpleGame{
public static void main(String[] args) {
HelloWorld app = new HelloWorld(); // Create Object
// Signal to show properties dialog
app.setConfigShowMode(ConfigShowMode.AlwaysShow);
app.start(); // Start the program
}
protected void simpleInitGame() {
// Make a box
Box b = new Box("Mybox", new Vector3f(0,0,0), new Vector3f(1,1,1));
rootNode.attachChild(b); // Put it in the scene graph
}
}
, Что бит кода - все, которое необходимо начать отображать 3D примитивы на экране. Этот пример имеет большую основную функциональность, встроенную для Вас, включая управление камерой, перемещение WASD и всестороннюю статистику производительности. Можно, конечно, переопределить все это и сделать что-либо, что Вы хотели бы.
Parenscript автоматически преобразует соглашение об именах Lisp (тире, разделяющие слова) в CamelCase, поэтому:
(parenscript:ps
(slot-value ($ "#mytextarea") 'selection-start))
приводит к
"$('#mytextarea').selectionStart;"
Как заметил Пилси, все символы по умолчанию начинаются с верхнего регистра, когда они читаются компилятор Лиспа. Однако есть способ отключить это. См. CLHS, 23.1.2 (Влияние Readtable Case на Lisp Reader), и описание метода доступа readtable-case
для подробностей. В качестве примера вы можете включить режим «инвертирования» (который, возможно, является единственной практической настройкой, которая также чувствительна к регистру), поместив в исходный файл Lisp следующее:
#.(setf (readtable-case *readtable*) :invert)
К сожалению, ParenScript, похоже, мало использует настраиваемого параметра readtable-case, даже если он может (и, по моему мнению, должен) это делать.