多个GL_QUADS在同一位置

时间:2013-11-18 07:29:25

标签: python opengl coordinates pyopengl quad

我有一个健康栏,它是两个GL_QUADS,在同一个z坐标上呈现,一个是红色,一个是绿色(绿色是剩余的健康部分。)但是,我现在才意识到,如果两个都只有1个GL_QUAD可见呈现在相同的位置。有没有办法改变单个GL_QUAD的一部分的颜色?

1 个答案:

答案 0 :(得分:1)

  1. 是一种更改单个GL_QUAD着色的方法,尽管您不想这样做。它将涉及通过改变纹理坐标来在其上滑动纹理贴图。不太聪明。

  2. 你想要的是两个四边形,其尺寸取决于健康状况。您将需要使用线性插值(LERP)来查找一个四边形和一个四边形开始的边缘。

  3. 这是数学伪代码,假设您的健康栏是水平的

    Quad_1.x start = 0
    Quad_1.x end = X%
    Quad_2.x start = X%
    Quad_2.x end = 1
    

    Quad_1最终占据该区域的X%,Quad_2最终占据该区域的(1-X)%。它们都将占据该区域的100%,您可以轻松地将其缩放到任何尺寸。只要确保你没有负面的健康状况或超过100%的健康状况弄乱你的图画。

    注意GL_QUADS已旧并且已弃用。使用GL_TRIANGLESGL_TRIANGLE_STRIP如果你效率(眨眼)。

    替代方法:

    • 您可以生成精美的程序2D图像并将其用作纹理贴图,然后可以使用该贴图来纹理单个四边形。你可以先根据上面的解释让你的纹理贴图只是一个简单的滑动条,但是从那里你可以使它看起来很花哨
    • 你可以像Xonar和Armin Rigo所指出的那样弄乱Z值。虽然如果你这样做是一个临时修复,它可能最终会让你更加麻烦。