1
在我的应用程序中,我想获得最大的恒定缓冲区大小。用DX,有一个宏D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT
代表这个值。如何获得OpenGL
的价值?如何使用OpenGL获得最大恒定缓冲区大小?
在我的应用程序中,我想获得最大的恒定缓冲区大小。用DX,有一个宏D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT
代表这个值。如何获得OpenGL
的价值?如何使用OpenGL获得最大恒定缓冲区大小?
OpenGL没有这样的限制。
Buffer Objects可以是任意大小。但是,不同的使用的缓冲区对象具有不同的大小限制。 source for vertex array data基本上是无界的。但buffer textures有一个大小限制。 bound range of uniform buffer data的大小有一个限制。根据需要,various other uses有限制。但是内存缓冲区的大小没有限制本身。
基本上,将缓冲区对象视为指向GPU内存的指针,glBufferData
为malloc
。使用指针的不同API可以限制他们可以访问多少内存。但malloc
本身没有任何特别的限制(当然,除了内存不足)。
谢谢,我对这些概念有点困惑,你的回答有很大帮助。我刚刚意识到dx中的“const buffer”对应于OGL中的“Uniform Block”,所以我可以使用glGetIntegerv()方法和GL_MAX_VERTEX_UNIFORM_BLOCKS,GL_MAX_GEOMETRY_UNIFORM_BLOCKS,GL_MAX_FRAGMENT_UNIFORM_BLOCKS,GL_MAX_UNIFORM_BLOCK_SIZE来获取属性。 – user2119107 2013-03-04 01:58:11