vertex-buffer相关内容

带有交错缓冲区的openGL glDrawElements

到目前为止,我只使用了glDrawArrays,想继续使用索引缓冲区和索引三角形.我正在绘制带有纹理坐标,法线和顶点坐标的有点复杂的对象.所有这些数据都收集到一个交错的顶点缓冲区中,并使用类似于(假定所有serup正确完成的)调用进行绘制: glVertexPointer( 3, GL_FLOAT, 22, (char*)m_vertexData ); glNormalPointer( GL ..
发布时间:2020-05-20 22:57:32 C/C++开发

在OpenGL中绑定点的目的?

我不了解OpenGL中绑定点(例如GL_ARRAY_BUFFER)的目的是什么.据我了解,glGenBuffers()创建了一种指向位于GPU内存中某处的顶点缓冲区对象的指针. 所以: glGenBuffers(1, &bufferID) 意味着我现在在图形卡上有一个句柄bufferID,它指向1个顶点对象.现在我知道下一步是将bufferID绑定到绑定点 glBindBuf ..
发布时间:2020-05-20 22:47:50 C/C++开发

使用实例数组时如何最小化glVertexAttribPointer调用?

我有使用所有模型数据使用一个VAO和使用两个VBO的OpenGL代码.第一个用于标准顶点属性,例如位置和法线,第二个用于模型矩阵.我正在使用实例绘制,因此我将模型矩阵作为实例数组(基本上是顶点属性)加载. 首先,我将标准顶点属性加载到VBO并使用glVertexAttribPointer设置所有内容一次.然后,我将模型矩阵加载到另一个VBO.现在,我必须在绘制循环中调用glVertexAtt ..
发布时间:2020-05-20 22:42:35 其他开发

OpenGL 3.x:使用顶点缓冲区对象和glDrawElements(...)时访问冲突

我无法通过使用顶点缓冲区对象来渲染某些几何图形.我打算绘制一个点平面,因此基本上是在我空间中每个离散位置上都有一个顶点.但是,我无法渲染该平面,因为每次调用glDrawElements(...)时,应用程序都会崩溃,并返回访问冲突异常.我猜初始化时一定有一些错误. 这是我到目前为止所拥有的: #define SPACE_X 512 #define SPACE_Z 512 typede ..
发布时间:2020-05-20 22:41:47 其他开发

顶点数组对象-关于确切保存有关当前绑定的顶点缓冲区的状态信息的困惑

我正在构建 arcynthesis 上的优秀教程,同时构建图形引擎和发现我对VAO的理解不如我想象的那样. 从教程第5章.深度对象 缓冲区绑定和属性关联 您可能会注意到glBindBuffer(GL_ARRAY_BUFFER)不在该列表上,即使它是用于渲染的属性设置的一部分.绑定到GL_ARRAY_BUFFER不是VAO的一部分,因为在调用glBindBuffer(GL_ARRA ..
发布时间:2020-05-20 22:34:19 其他开发

如何将模型矩阵包含到VBO中?

我想发送一个缓冲区列表(到GPU/顶点着色器),其中包含有关顶点位置,世界位置,颜色,比例和旋转的信息. 如果我的每个3D对象在矩阵中都具有与转换相关的信息,我如何通过VBO将这个矩阵数组(除了其他顶点数据之外)传递给GPU? 已更新 请原谅任何错别字: // bind & set vertices. gl.bindBuffer(gl.ARRAY_BUFFER, vertexBu ..
发布时间:2020-05-20 22:11:32 其他开发

使用VAO时,VBO中的交错是否会提高性能

使用交错VBO而不是多个VBO时通常会加快速度. 使用VAO时是否也有效? 因为在位置上有一个VBO,对法线有一个VBO更加方便. 您可以在多个VAO中使用一个VBO. 解决方案 VAO 要共享更大的数据集,一定要使用一个包含单个顶点(阵列)数组的专用缓冲区,而仍然可以将特定的数组插入另一个缓冲区并使用VAO组合它们. VAO处理所有这些缓冲区和顶点(attrib)数组状 ..
发布时间:2020-05-20 21:54:50 其他开发

如何将int转换为const GLvoid *?

在我的跨平台OpenGL应用程序中,我想使用顶点缓冲区对象进行绘制.但是我在调​​用glDrawRangeElements时遇到了问题. glDrawRangeElements(GL_TRIANGLES, start, start + count, count, GL_UNSIGNED_INT, static_cast (start * si ..
发布时间:2020-05-20 21:50:47 其他开发

如何在OpenGL Es 2.0中正确更新顶点数组?

当我在OpenGL 2.0中更新iOS上的顶点数组时,原始顶点数据停留在屏幕上 - 即第一次刷新是持久的(我向下发送到GPU的初始点集每帧渲染一次),但是第2次,第3次,第4次,第n次冲洗似乎都覆盖了相同的记忆。 所以我在做: vector rawDynamicData; glGenVertexArraysOES(1,& va); CHECK_GL; ..
发布时间:2018-09-19 19:17:30 移动开发

如何完全取消绑定GL_ELEMENT_ARRAY_BUFFER?

我正在研究一个多线程应用程序,它可以同时将几何图形渲染到多个FBO。我遇到了泄漏(如此问题所述)。 我已经能够缩小一点 - 如果我做了一个改变,它会停止泄漏 - 但我不明白为什么。 开每一个线程(每个线程都有自己的共享上下文),我在做每个渲染周期的下列代码: //上传 positionBuffer = getUnusedArrayBufferFromPool(); g ..
发布时间:2018-05-25 19:33:30 其他开发

如何组织WebGL中的顶点数据来制作一帧一帧(非常具体)的动画程序?

我一直在研究一个具有非常特殊要求的动画图形项目,经过相当多的搜索和测试编码之后,我发现我可以采取多种方法,但我一直在阅读Khronos和MDN文档,我在这里看到的其他帖子没有回答关于我的特定项目的所有问题。与此同时,我编写了简短的测试程序(设置测试基础设施)。 首先,我应该描述这个项目: 绘制到屏幕上的主要对象是一个由黑色轮廓包围的简单四边形(LINE_LOOP或LINES可能会这样做 ..
发布时间:2018-05-25 19:17:11 其他开发

什么时候VBO比“简单”更快? OpenGL基元(glBegin())?

经过多年的关于顶点缓冲区对象(VBOs)的听闻后,我终于决定尝试它们了(我的东西通常不是性能的关键,显然......) 我会在下面描述我的实验,但为了简短起见,我在“简单”直接模式(glBegin()/ glEnd()),顶点数组(CPU端)和VBO( GPU端)渲染模式。我试图理解这是为什么,以及在什么条件下,我可以期望看到维也纳组织的工作人员明显地超越了他们原始的双关语祖先。实验细节 h ..
发布时间:2018-05-25 18:35:47 其他开发

为什么在Core Profile 3.2下OpenGL的glDrawArrays()会失败并返回GL_INVALID_OPERATION,但不是3.3或4.2?

我有OpenGL渲染代码调用glDrawArrays,当OpenGL上下文(自动/隐式地获取)4.2但是一致地失败(GL_INVALID_OPERATION)和明确请求的OpenGL核心上下文3.2时,它完美地工作。 (在这两种情况下,着色器总是被设置为#version 150,但这与我怀疑的地方没有关系。)根据规格,只有两个如果glDrawArrays()失败并返回GL_INVALID_OPER ..
发布时间:2018-05-02 18:13:17 其他开发语言

VBO:数组未绘制

我关注本指南,我想尝试将四边形绘制到屏幕。我也看到源代码,它是相同的,它应该工作,但在我的情况下没有什么显示在屏幕上。我使用OpenGL 2.0与顶点着色器,只是将颜色设置为红色的四边形应该在屏幕上可见。 在callig glutMainLoop之前,我生成顶点缓冲对象: include #include vecto ..
发布时间:2016-11-02 03:26:39 C/C++开发

如何在另一种颜色的顶点缓冲区中绘制顶点

我使用Direct3D 9画线。 现在使用的顶点格式为 D3DFVF_XYZ | D3DFVF_DIFFUSE 并存储在顶点缓冲区中。它们以 DrawPrimitive 作为 D3DPT_LINELIST 绘制。 我改变整个绘制的顶点缓冲区的绘制颜色,甚至一个特定的顶点,而不锁定顶点缓冲区来修改它的内容?这必须在每一帧。 这是否可能与顶点缓冲区?我更喜欢没有自定义着色器的解决方案 ..
发布时间:2016-10-30 04:59:34 C/C++开发