Да, 303 текстура ~ 1,2 ГБ, если я правильно ее вычислю.Однако вашей карте памяти также требуется память для кадрового буфера и других вещей.К сожалению, нет единого GL API для запроса доступной памяти.Однако для этого есть расширения.Вот как я запрашиваю основную информацию в моем OpenGL движке ( VCL / C ++ ):
AnsiString OpenGLscreen::glinfo()
{
AnsiString txt="";
txt+=glGetAnsiString(GL_VENDOR)+"\r\n";
txt+=glGetAnsiString(GL_RENDERER)+"\r\n";
txt+="OpenGL ver: "+glGetAnsiString(GL_VERSION)+"\r\n";
if (ext_is_supported("GL_NVX_gpu_memory_info"))
{
GLint x,y,z;
x=0; glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX,&x);
y=0; glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX,&y);
z=0; glGetIntegerv(GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX,&z);
txt+=AnsiString().sprintf("GPU memory: %i/%i/%i MByte\r\n",x>>10,y>>10,z>>10); // GPU free/GPU total/GPU+CPU shared total
x=0; glGetIntegerv(GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX,&x);
y=0; glGetIntegerv(GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX,&y);
txt+=AnsiString().sprintf("GPU blocks: %i used: %i MByte\r\n",x,y>>10);
}
if (ext_is_supported("GL_ATI_meminfo"))
{
GLint x0,x1,x2,x3; // free,largest available block,free auxiliary, largest available auxiliary
x0=0; glGetIntegerv(GL_VBO_FREE_MEMORY_ATI,&x0);
x1=0; glGetIntegerv(GL_VBO_FREE_MEMORY_ATI,&x1);
x2=0; glGetIntegerv(GL_VBO_FREE_MEMORY_ATI,&x2);
x3=0; glGetIntegerv(GL_VBO_FREE_MEMORY_ATI,&x3);
txt+=AnsiString().sprintf("VBO memory: %i MByte\r\n",x0>>10);
x0=0; glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI,&x0);
x1=0; glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI,&x1);
x2=0; glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI,&x2);
x3=0; glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI,&x3);
txt+=AnsiString().sprintf("TXR memory: %i MByte\r\n",x0>>10);
x0=0; glGetIntegerv(GL_RENDERBUFFER_FREE_MEMORY_ATI,&x0);
x1=0; glGetIntegerv(GL_RENDERBUFFER_FREE_MEMORY_ATI,&x1);
x2=0; glGetIntegerv(GL_RENDERBUFFER_FREE_MEMORY_ATI,&x2);
x3=0; glGetIntegerv(GL_RENDERBUFFER_FREE_MEMORY_ATI,&x3);
txt+=AnsiString().sprintf("BUF memory: %i MByte\r\n",x0>>10);
}
return txt;
}
Так что извлеките nVidia и ATI / AMD запросов к памяти.и перенести в вашу среду.