【问题标题】:Gradients and memory渐变和记忆
【发布时间】:2010-06-09 01:32:56
【问题描述】:

我正在使用 OpenGL 创建一个绘图应用程序。我创建了一个生成渐变纹理的算法。然后我将这些映射到我的多边形上,效果很好。我意识到这需要多少内存。创建 1000 个渐变大约需要 800MB,这太多了。是否有纹理的替代方法,或压缩它们的方法,或将渐变映射到不占用太多内存的多边形的另一种方法?

谢谢

我的多边形是凹的,我使用 GLUTesselator,它们是多色的并且是点对点的

【问题讨论】:

    标签: c++ c opengl gradient


    【解决方案1】:

    是的...渐变在 OpenGL 中非常容易实现;你根本不需要纹理。在这里从记忆中工作...您只需执行以下操作:

    glBegin(GL_POLYGON);
    glColor3ub(255,0,0); // red
    glVertex2f(-1,-1);
    glVertex2f(1,-1);
    glColor3ub(0,0,255); // blue
    glVertex2f(1,1);
    glVertex2f(-1,1);
    glEnd();
    // draws a square that fades from red to blue
    

    如果你改变一个顶点的颜色,它只会在这两点之间创建一个渐变。

    【讨论】:

      【解决方案2】:

      您也可以尝试在片段着色器中以程序方式生成渐变。

      如果走纹理压缩路径,可以使用glCompressedTexImage2D,压缩纹理格式是通过GL扩展提供的,常见的是S3TC/DXT1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        • 2021-06-17
        相关资源
        最近更新 更多