【发布时间】:2010-06-09 01:32:56
【问题描述】:
我正在使用 OpenGL 创建一个绘图应用程序。我创建了一个生成渐变纹理的算法。然后我将这些映射到我的多边形上,效果很好。我意识到这需要多少内存。创建 1000 个渐变大约需要 800MB,这太多了。是否有纹理的替代方法,或压缩它们的方法,或将渐变映射到不占用太多内存的多边形的另一种方法?
谢谢
我的多边形是凹的,我使用 GLUTesselator,它们是多色的并且是点对点的
【问题讨论】:
我正在使用 OpenGL 创建一个绘图应用程序。我创建了一个生成渐变纹理的算法。然后我将这些映射到我的多边形上,效果很好。我意识到这需要多少内存。创建 1000 个渐变大约需要 800MB,这太多了。是否有纹理的替代方法,或压缩它们的方法,或将渐变映射到不占用太多内存的多边形的另一种方法?
谢谢
我的多边形是凹的,我使用 GLUTesselator,它们是多色的并且是点对点的
【问题讨论】:
是的...渐变在 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
如果你改变一个顶点的颜色,它只会在这两点之间创建一个渐变。
【讨论】:
您也可以尝试在片段着色器中以程序方式生成渐变。
如果走纹理压缩路径,可以使用glCompressedTexImage2D,压缩纹理格式是通过GL扩展提供的,常见的是S3TC/DXT1。
【讨论】: