1

我已经以正确的尺寸加载了我的游戏,显示了背景并播放了一些背景音乐,这应该是一个登录屏幕,我以前从未弄乱过图形,尽管我知道如何编写大部分服务器/客户端通信,所以这不会是一个问题。

如何绘制多个图像,以及如何将它们放在我想要的位置?

更重要的是,OpenGL 是否支持 PNG 图像的“透明”功能?因为这就是我通过半透明登录框、半透明按钮等开发开始屏幕的方式。

我知道如何加载图像,尽管绘制它们是另一回事..

public void drawStartScreen() {
        Color.white.bind();
        c.getAssets().backgroundImage.bind(); // or GL11.glBind(c.getAssets().backgroundImage.getTextureID());
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glTexCoord2f(0, 0);
        GL11.glVertex2f(0, 0);
        GL11.glTexCoord2f(1, 0);
        GL11.glVertex2f(c.getAssets().backgroundImage.getTextureWidth(), 0);
        GL11.glTexCoord2f(1, 1);
        GL11.glVertex2f(c.getAssets().backgroundImage.getTextureWidth(),
                c.getAssets().backgroundImage.getTextureHeight());
        GL11.glTexCoord2f(0, 1);
        GL11.glVertex2f(0, c.getAssets().backgroundImage.getTextureHeight());
        GL11.glEnd();

        if(playMusic == true) {
            c.getAssets().backgroundMusic.playAsMusic(1.0f, 1.0f, true);
            playMusic=false;
        }
    }

我不知道如何使用上面的代码移动图像,所以我无法编写自己的方法来用“参数”“填充”上面的代码。

我试图让我的次要图像绘制到客户端中间,我知道人们可能会因此而看不起我,尽管这是我正在谈论的内容的一个小例子,也是我在编程方面的一些经验的来源多年来一直为 Runescape 创建基于服务器的模拟器,所以下面我将在背景上留下一个显示“登录框”的图像。按钮是透明的,带有黑色边缘,可以让你看到它下面的登录框,除了绘制黑色边框的位置。

这就是我所说的“透明”支持:

图像

4

1 回答 1

1

我已经以正确的尺寸加载了我的游戏,并显示了背景

如果您遵循散布在互联网上的众多糟糕教程之一,那么您可能做错了。OpenGL 是一个状态机,这意味着您可以在需要时更改任何您想要的内容。

大多数教程将 glViewport 和投影矩阵设置放在窗口调整大小处理程序中。如果您仅显示没有其他元素的场景,则此方法有效。但是在像你这样的情况下,这种设置相当不方便。

只需做简单的事情:您可以在需要时将视口和投影更改为最适合您需要的任何内容。您想在屏幕中央绘制图像吗?只需根据需要设置视口和投影:

glViewport(0, 0, win_width, win_height);
aspect = win_width/win_height;
projection_ortho(-aspect, aspect, -1, 1);

更重要的是,OpenGL 是否支持 PNG 图像的“透明”功能?

是的,这叫做混合。

于 2013-02-21T23:36:37.310 回答