我已经将游戏加载到正确的尺寸,显示背景并播放一些背景音乐,这应该是一个登录屏幕,我以前从未搞过图形,虽然我知道怎么写大多数服务器/客户端通信都不会有问题。
如何绘制多个图像,如何将它们放在我想要的位置?
更重要的是,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创建基于服务器的模拟器多年,所以下面我将留下一个图像显示背景上的“LoginBox”..按钮是透明的黑色边缘,这使您可以看到登录框在它下面,除了绘制黑色边框的地方。
这就是我所说的“透明”支持:
答案 0 :(得分:1)
我已经将游戏加载到正确的尺寸,显示背景
如果您遵循分散在互联网上的许多不良教程之一,那么你可能做错了。 OpenGL是一个状态机,这意味着您可以在需要时随意更改任何内容。
大多数教程都将glViewport和投影矩阵设置放在窗口大小调整处理程序中。如果您只显示没有其他元素的场景,则此方法有效。但在像你这样的情况下,这种设置相当不方便。
做一件简单的事情:您可以在需要时将视口和投影更改为最适合您需求的内容。您想在屏幕上绘制图像吗?只需根据需要设置视口和投影:
glViewport(0, 0, win_width, win_height);
aspect = win_width/win_height;
projection_ortho(-aspect, aspect, -1, 1);
更重要的是,OpenGL是否支持PNG图像的“透明”功能?
是的,这叫做混合。