使用OpenGL的文本字段

时间:2013-02-25 19:51:30

标签: java opengl text lwjgl slick2d

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

我已经尝试过看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();
} 

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

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

2 个答案:

答案 0 :(得分:0)

在调用函数之前尝试绑定所需的纹理。在不知道你如何“确定”其他纹理没有被束缚的情况下,我就可以说。另外,要改变不透明度,只需使用GL11.glColor4_函数之一;最后一个参数是颜色的alpha(不透明度)。

答案 1 :(得分: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不透明度的白色矩形。

查看 BOLDED 部分(0.5f)。此浮点数定义矩形的不透明度。这个数字越大(0.0f~1.0f),矩形的不透明度就越大。