- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上就是这样,为什么glBufferData 采用指针而不是int?这个 arg 应该是缓冲区对象的大小,那么为什么不是 GLsizei 呢?
glBufferData 上的 OpenGL 文档 https://www.opengl.org/sdk/docs/man/html/glBufferData.xhtml
最佳答案
当顶点缓冲区对象是 introduced via the OpenGL extension mechanism , 新型 GLsizeiptrARB
创建并提供了以下理由:
What type should <offset> and <size> arguments use?
RESOLVED: We define new types that will work well on 64-bit systems, analogous to C's "intptr_t". The new type "GLintptrARB" should be used in place of GLint whenever it is expected that values might exceed 2 billion. The new type "GLsizeiptrARB" should be used in place of GLsizei whenever it is expected that counts might exceed 2 billion. Both types are defined as signed integers large enough to contain any pointer value. As a result, they naturally scale to larger numbers of bits on systems with 64-bit or even larger pointers.
The offsets introduced in this extension are typed GLintptrARB, consistent with other GL parameters that must be non-negative, but are arithmetic in nature (not uint), and are not sizes; for example, the xoffset argument to TexSubImage*D is of type GLint. Buffer sizes are typed GLsizeiptrARB.
The idea of making these types unsigned was considered, but was ultimately rejected on the grounds that supporting buffers larger than 2 GB was not deemed important on 32-bit systems.
GLsizeiptrARB
该类型获得了标准化名称
GLsizeiptr
你今天在函数签名中看到的。
关于opengl - glBufferData 第二个参数是 GLsizeiptr 不是 GLsizei,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26758129/
当创建一个 Buffer 并设置它的数据时,需要先将它绑定(bind)到一个 target,然后用一些数据填充绑定(bind)到该 target 的缓冲区: GLenum target = GL_AR
我想知道,如果我使用 glBufferData,它会在我调用它时准确地分配内存吗(也就是说,如果 size 参数大于此时的可用内存,它会崩溃)还是会它有某种特殊的即时规则,仅当我实际将数据复制到缓冲区
我所说的标志是 GL_STREAM_DRAW、GL_STATIC_DRAW 和 GL_DYNAMIC_DRAW。 The manual page is clear about when you sho
我尝试将索引加载到 GL_ELEMENT_ARRAY_BUFFER 中,但是当我尝试此操作时,它会用 0 分隔我的数据。 例如我加载了这些数据: [0 1 3 3 1 2] 使用函数glBufferD
我在 glBufferData 上有随机崩溃,它只发生在 Windows 上。 Mac OS 和 Linux 没有问题。这是我的上传功能,它将我保存在内存中的所有内容上传到 GPU。 vertex 是
我刚刚注意到,当我尝试使用大小:1085859108 和数据:NULL 调用 glBufferData 时,它会无提示地失败。 以下对 glBufferSubData 的调用失败并出现 OUT_OF_
我正在使用明确定义的顶点坐标数组创建 glBufferData,一切正常。使用未明确定义的数组时,结果完全不同,尽管我使用的是相同的坐标值。绘制调用以不同的顶点顺序渲染事物。 顶点是三角形网格。 代码
我正在尝试移植我的固定功能管线 openGL 代码以使用 GLSL,但我遇到了 glBufferData 的段错误。这一切都与固定功能的东西一起工作得很好(即我可以毫无问题地渲染加载的网格)。 这是加
This question询问是否可以依靠编译器不弄乱 struct 的值顺序和填充。 根据该问题的答案, OpenGL defines, very clearly, what the byte la
我不明白为什么这段代码会出现段错误: AxesMarker::AxesMarker(float size) : size_(size), vbo_vertices_(0), vbo_eleme
我正在使用 OpenGL实现某种批量绘图。为此,我创建了一个 vertex buffer来存储数据。 注意:这个缓冲区通常会在每一帧上更新,但永远不会减少大小(但仍然可以增加)。 我的问题是:使用 g
我正在使用 glBufferData 来保存一些渲染信息。 glBufferData(GL_ARRAY_BUFFER, vertex_size * sizeof(VertexData), vertic
在开发过程中,我注意到一个奇怪的“错误”,它只能在 Android 模拟器上重现。我正在使用具有 GPU 加速功能的 x86 版本。请查看以下代码: public class TestRenderer
我正在浏览 OGLdev教程,而且我一直坚持让顶点数组对象工作。相关代码如下: glBindBuffer(GL_ARRAY_BUFFER, buffers[POS_VB]); FloatBuffer
我有这段代码,它不起作用我不知道为什么,我认为它应该,但似乎第一个缓冲区数据被第二个缓冲区数据替换了。我想要实现的是第一个线条粗细与另一个不同, vector vert={-.4,.2,-.2,.6}
这个问题在这里已经有了答案: Can I delete a float array when I have used glBufferData? (2 个答案) When does OpenGL g
我有一个关于 OpenGL glBufferData() 方法的问题。我能否在 std::vector 、std::list 等结构中传递顶点数据,或者它必须是经典的 ( [] ) 数组? 最佳答案
在渲染器的初始化中,VBO被创建并绑定(bind)到GL_ARRAY_BUFFER或GL_ELEMENTS_ARRAY_BUFFER,第一个有三个顶点。调用glBufferData将这三个顶点的属性缓
我创建了一个顶点缓冲区对象类来管理应用程序中的大量顶点。用户调用构造函数创建一个glBuffer,调用glBufferData分配指定大小的空间。 有一个名为 resize 的类函数,允许用户通过再次
我是 OpenGL 的初学者,我正在尝试绘制一个彩色方 block ,我遵循了 OpenGL Book 上的教程。我正在使用示例绘制 here .因为这绘制了一个三角形,所以我修改了代码以绘制 4 个
我是一名优秀的程序员,十分优秀!