Создание фигур с помощью Nifty GUI и LWJGL
Я пытаюсь создать шестиугольник на экране в моей игре LWJGL. Я использую Nifty GUI. В настоящее время у меня есть 2 экрана, и я хочу переключиться на экран, где я программно рисую шестиугольники.
Вот мой xml для экрана
<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd">
<useStyles filename="nifty-default-styles.xml" />
<useControls filename="nifty-default-controls.xml" />
<screen id="start" controller="StartScreen">
<layer id="background" childLayout="center">
<image filename="util/img/menuTexture.png" />
</layer>
<layer id="title" childLayout="vertical">
<image align="center" height="20%" width="80%" filename="util/img/title.png" />
<panel id="subactions" childLayout="absolute" marginTop="40%" height="13%">
<image align="left" height="100%" width="30%" x="0px" y="0px" filename="util/img/rules.png">
<interact onClick="showRules()" />
</image>
<image align="right" height="100%" width="30%" x="70%" y="0px" filename="util/img/exit.png">
<interact onClick="exitGame()" />
</image>
</panel>
<image align="center" height="20%" width="80%" filename="util/img/start game.png" marginTop="5%">
<interact onClick="startGame()" />
</image>
</layer>
</screen>
<screen id="rules" controller="StartScreen">
<layer id="background" childLayout="center">
<image filename="util/img/menuTexture.png" />
</layer>
<layer id="transparent" backgroundColor="#D1D1D1A7" childLayout="vertical">
<panel id="rulesPanel" childLayout="center">
<image filename="util/img/game rules.png" width="100%" height="100%" />
</panel>
<panel id="goToStartPanel" childLayout="center" width="100%" height="13%">
<image height="100%" filename="util/img/exit.png">
<interact onClick="goToStartScreen()" />
</image>
</panel>
</layer>
</screen>
Как мне переключиться на такой экран (я бы использовал nifty.gotoScreen()?) И инициализировать цикл рендеринга?
Любой пример кода будет полезен. Большое спасибо.
1 ответ
Да, вы всегда используете nifty.gotoScreen() для переключения на другой экран.
Но я не совсем понимаю часть форм рисования;) Текущие Nifty, 1.3.x или 1.4.x не поддерживают пользовательское рисование на экране. Но никто не мешает вам рендерить другие вещи до или после того, как вы вызовете nifty.render(), который заставляет вещи появляться ниже или выше элементов, визуализируемых Nifty.
Если вы хотите, чтобы некоторые элементы отображались на экране Nifty, нарисованном вами, ваш единственный шанс - получить текстуру, которую Nifty визуализирует, и визуализировать эту текстуру самостоятельно (снаружи и без какой-либо помощи со стороны Nifty). Например, Nifty будет отображать текстуру как элемент изображения, но вы можете изменить содержимое текстуры за пределами Nifty.
Имеет ли это смысл?