我想知道在OpenGL中使用纹理时如何减少图形内存的消耗。我的代码:
glGenTextures(1,&textura);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB,textura);
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexImage2D(GL_TEXTURE_RECTANGLE_ARB,0,GL_COMPRESSED_RGBA_ARB,ilancho,ilalto,0,GL_RGBA,GL_UNSIGNED_BYTE,ildata);
//MAIN LOOP
glEnable(GL_TEXTURE_RECTANGLE_ARB);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB,textura);
glLoadIdentity();
glTranslatef(320.0,240.0,0.0);
glBegin(GL_TRIANGLE_FAN);
glTexCoord2d(0.0,0.0);
glVertex2f(-320.0, 240.0);
glTexCoord2d(0.0,480.0);
glVertex2f(-320.0,-240.0);
glTexCoord2d(640.0,480.0);
glVertex2f( 320.0,-240.0);
glTexCoord2d(640.0,0.0);
glVertex2f( 320.0, 240.0);
glEnd();
glBindTexture(GL_TEXTURE_RECTANGLE_ARB,0);
glDisable(GL_TEXTURE_RECTANGLE_ARB);
我使用RivaTuner来检查图形内存的消耗情况,看起来是相同的,有无压缩。
我做错了什么?
我有一块NVIDIA显卡geforce 6200 512mb ddr2。
答案 0 :(得分:0)
glTexImage2D的文档表明,如果压缩格式不可用,它将透明地回退非压缩< / em>等效的内部格式。因此,可以得出一些结论:1。您的opengl实现不支持压缩格式,并且您遇到了记录的行为。 2.您选择的分析工具会为您提供不准确的统计信息。
如果您的实现支持特定的内部格式,您应该能够使用internalformat_query进行查询。如果不是,您只需使用不同的压缩方法,如dxt / s3ct格式。