我正在使用 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。