0

所以,我是 OpenGL 的新手,并试图创建一个 2D 多人游戏,我知道如何做所有的网络,虽然图形部分老实说让我很生气。

我尝试查看 NiftyGUI 和 TWL,因为它们被推荐了很多,虽然我似乎无法掌握它们,因为没有太多教程和视频来帮助解释发生了什么,而不是提到OpenGL纪录片页面的布局非常糟糕。

我尝试绘制一个黑色矩形,我将继续以某种方式以白色勾勒出轮廓,并通过在其上绘制白色字体使其成为临时文本框,尽管我什至不知道如何绘制字体。这些只是我正在努力解决的一些我找不到的事情,而且我知道我将不得不使用一些库,所以我将命名我目前已经实现的那些。

  • LWJGL
  • Slick2D

除了 TWL 之外,我目前没有任何其他人,但我无法弄清楚如何在我的生活中使用它。

这是我在尝试让一个黑色的小矩形运行时自己编写的代码

void drawTextBox(int fromLeft, int fromTop, int width, int height) {
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 0);
        glVertex2i(fromLeft, fromTop);  // Upper Left
        glTexCoord2f(1, 0); 
        glVertex2i(fromLeft - width, fromTop);  // Uppright
        glTexCoord2f(1, 1); 
        glVertex2i(fromLeft - width, fromTop + height);  // Bottom right
        glTexCoord2f(0, 1); 
        glVertex2i(fromLeft, fromTop + height); // bottom left
    glEnd();
} 

这工作正常,除了一个部分......它正在绘制我加载的最后一个纹理,即使我没有在程序中的任何地方绑定它,因为我已经确定了它。然后它会缩放它以适应文本框的尺寸。

有人可以帮我解决这个错误并指导我学习如何设置四边形的不透明度以及绘制一些文本吗?

4

2 回答 2

0
void drawTextBox(int fromLeft, int fromTop, int width, int height) {

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    glColor4f(1.0f, 1.0f, 1.0f, <B>0.5f</B>);

    glBegin(GL_QUADS);
        glTexCoord2f(0, 0);
        glVertex2i(fromLeft, fromTop);  // Upper Left
        glTexCoord2f(1, 0); 
        glVertex2i(fromLeft - width, fromTop);  // Uppright
        glTexCoord2f(1, 1); 
        glVertex2i(fromLeft - width, fromTop + height);  // Bottom right
        glTexCoord2f(0, 1); 
        glVertex2i(fromLeft, fromTop + height); // bottom left
    glEnd();

    glDisable(GL_BLEND);
} 

此代码块允许您绘制一个不透明度为 %50 的白色矩形。

看一下粗体部分(0.5f)。这个浮点数定义了矩形的不透明度。这个数字越大(0.0f~1.0f),矩形的不透明度就越高。

于 2014-07-24T06:14:45.183 回答
0

在调用函数之前尝试绑定你想要的纹理。在不知道您如何“确保”其他纹理没有被绑定的情况下,我只能这么说。此外,要更改不透明度,只需使用其中一种GL11.glColor4_功能;最后一个参数是颜色的 alpha(不透明度)。

于 2013-02-25T20:33:53.743 回答