【问题标题】:Creating shapes with Nifty GUI and LWJGL使用 Nifty GUI 和 LWJGL 创建形状
【发布时间】:2015-06-12 07:09:43
【问题描述】:

我正在尝试在我的 LWJGL 游戏的屏幕上创建一个六边形。我正在使用漂亮的 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() 吗?)并初始化渲染循环?

任何示例代码都会有所帮助。非常感谢。

【问题讨论】:

    标签: java lwjgl nifty-gui


    【解决方案1】:

    是的,您总是使用 nifty.gotoScreen() 来切换到不同的屏幕。

    但我不太了解绘图形状部分;) 当前 Nifty、1.3.x 或 1.4.x 不支持自定义绘图到屏幕。但是没有人阻止您在调用 nifty.render() 之前或之后渲染其他内容,这会使内容显示在 Nifty 渲染的元素下方或上方。

    如果您想直接在 Nifty 屏幕上自定义您绘制的某些元素,您唯一的机会是获取 Nifty 渲染的纹理并自行渲染到该纹理(在外部并且没有 Nifty 的任何帮助) .例如,Nifty 只会将纹理显示为图像元素,但您可以在 Nifty 之外更改纹理的内容。

    这有意义吗?

    【讨论】:

    • 是的,这是有道理的。您能否指出一些有关如何获取纹理并使用 lwjgl 进行渲染的示例代码。我知道如何分别使用 nifty 和 lwjgl,但不能一起使用。谢谢! @void256
    • 不幸的是,我没有任何可用的示例代码。此外,这取决于您使用的 Nifty 版本以及您使用的 LWJGL 渲染器(经典、批处理、核心配置文件批处理等)。您需要做的是访问 RenderImage 实例,将其转换为您正在使用的特定 impl 并访问其 OpenGL textureId。使用它从 LWJGL 访问纹理以修改它,然后调用 f.i. github.com/void256/nifty-gui/blob/1.4/nifty-core/src/main/java/… 修改纹理后。抱歉,没有更简单的方法。
    猜你喜欢
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多