我一直在尝试制作跨平台的2D在线游戏,我的地图是用瓷砖制作的。 我渲染瓷砖的瓷砖组非常庞大。 我想知道如何禁用硬件渲染,或至少使其更强大。 因此,我想知道视频RAM的基本限制是什么,据我所知,Direct3D有一个纹理大小限制(我并不是指两种纹理的大小)。
答案 0 :(得分:0)
如果您想使用软件渲染器,请链接Mesa。
您可以使用these methods估算最大纹理尺寸:
21.130我的设备将硬件加速渲染的最大尺寸纹理贴图是什么?
一个好的OpenGL实现将尽可能使用硬件加速进行渲染。但是,实现可以自由地不渲染硬件加速。 OpenGL不提供确保应用程序使用硬件加速的机制,也不提供使用硬件加速查询的机制。记住这些信息,以下内容可能仍然有用:
您可以通过以下调用获得实现支持的最大纹理大小的估计值:
GLint texSize; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
如果您的纹理不是硬件加速,但仍然在
GL_MAX_TEXTURE_SIZE
返回的尺寸限制范围内,它仍应正确呈现。这只是一个估计,因为
glGet*()
函数不知道您将为任何给定纹理使用什么格式,内部格式,类型和其他参数。 OpenGL 1.1和更高版本通过允许纹理代理解决了这个问题。以下是使用纹理代理的示例:
glTexImage2D(GL_PROXY_TEXTURE_2D, level, internalFormat, width, height, border, format, type, NULL);
请注意,pixels参数为NULL,因为当目标参数为
GL_PROXY_TEXTURE_2D
时,OpenGL不会加载纹素数据。相反,OpenGL只考虑它是否可以容纳指定大小和描述的纹理。如果无法容纳指定的纹理,则宽度和高度纹理值将设置为零。进行纹理代理调用后,您将需要按如下方式查询这些值:GLint width; glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); if (width==0) { /* Can't use that texture */ }