问题标签 [vertex-buffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
144 浏览

field - 可以将四 (4) 个单个 VertexBuffer 关联到顶点属性寄存器的每个字段吗?

Stage3D/AGAL中,是否可以通过以下方式将单个 VertexBuffers 指向相同va0的对象:

  • 每个VertexBuffer数据都可以独立更改(假设在某些情况下这是很好的性能,是吗?)。

  • 每个都VertexBuffer专注于va0(第一个顶点属性寄存器)的一个字段,以便 vertexbuffer1 操作va0.x、 vertexbuffer2 = va0.y、 vertexbuffer3 =va0.z和 vertexbuffer4 = va0.w

由于您可以在将 VertexBuffer 分配给对象时指定“偏移量”和数据格式(例如:FLOAT_1、FLOAT_4)Context3D,我想这是可能的。

也许我的设置不正确,但是当我尝试这样做时,我无法实现。

每个 VertexBuffer 是否需要占用每个寄存器中的全部 4 个字段?如果是这样,我不确定我是否理解为什么存在 FLOAT_1 -to- FLOAT_3 值!:S

提前致谢!

0 投票
1 回答
4643 浏览

android - 如何在opengl android中画一条线

我必须使用线条来绘制 squre,它看起来像下面的 url。

http://www.thinkingwriting.qmul.ac.uk/wishees/tutorials/square.gif

你能告诉我如何使用opengls GL_LINES或GL_LINES_STRIP在android中绘制它吗

0 投票
1 回答
2573 浏览

ios - OpenGL ES 2.0 GLKit 画线

我正在尝试用 OpenGL ES 2.0 GLKit 画一条线。当我运行以下代码并使用 OpenGL ES Analyzer 时,我收到以下错误:

“使用不存在的程序”glDrawArrays(GL_LINE_STRIP,0,4)

“GL 错误:无效操作” GL_INVALID_OPERATION <- glVertexPointer(2,GL_FLOAT,0,NULL) GL_INVALID_OPERATION <- glEnableClientState(GL_VERTEX_ARRAY)

这是我的代码:

0 投票
2 回答
874 浏览

performance - 顶点缓冲对象和 glutsolidsphere

我必须在类似“弹簧质量”的系统的 3D 物理模拟中绘制大量球体。

我想知道一种绘制球体的有效方法,而不必在模拟的每一步都编译显示列表(每一步可能从毫秒到秒不等,具体取决于计算中涉及的物体数量)。

我读过顶点缓冲区对象是绘制对象的一种有效方法,这些对象有时也需要更新。

有什么方法可以比 glutSolidSphere 更快地绘制 OpenGL 球体?

0 投票
1 回答
1183 浏览

c++ - DirectX - 使用顶点数组作为参数创建缓冲区

今天我开始使用 DirectX(D3D9),一切都很顺利,直到我创建了一个静态网格类。此类包含用于生成缓冲区、绘制和释放缓冲区的方法。

问题出在缓冲区生成函数中。如果我想将顶点数组作为参数传递给函数,则在绘制时不会绘制三角形(用三角形测试),但是,如果顶点是在函数中声明的(与作为论点),则不绘制三角形。

顶点类:

顶点缓冲区生成函数(不起作用):

顶点缓冲区生成函数(确实有效):

我看不出有什么问题。感谢您的帮助,如果需要更多信息,请告诉我。

0 投票
2 回答
6299 浏览

python - 如何在 PyOpenGL 中使用 glBufferData()?

如何在 PyOpenGL python 绑定到 OpenGL 中使用 glBufferData()?

当我运行以下代码时

然后调用 glBufferData() 会导致错误消息

该代码应该在绿色背景上绘制一个红色矩形。

0 投票
2 回答
1851 浏览

python - 如何使用 PyOpenGL 指定缓冲区偏移量

什么是 PyOpenGL 等价物

如果偏移量为 0,则

有效,但我不知道如何将非零偏移量指定到缓冲区对象中。

0 投票
1 回答
1634 浏览

c++ - OpenGL 批处理:为什么我的绘图调用超出数组缓冲区范围?

我尝试使用顶点缓冲区对象在 OpenGL ES 2.0 中实现一些相对简单的 2D 精灵批处理。但是,我的几何图形没有正确绘制,并且我似乎无法找到的一些错误导致 Instruments 中的 GL ES 分析器报告:

绘制调用超出数组缓冲区边界

一个绘图调用访问了一个超出正在使用的数组缓冲区范围的顶点。这是一个严重的错误,可能会导致崩溃。

我已经通过一次绘制单个四边形而不是批处理来测试具有相同顶点布局的绘图,并且它按预期绘制。

其他可能相关的信息:renderQueue 是 DrawDescriptors 的向量。BufferStride 是 4,因为我的顶点缓冲格式是交错的 position2, texcoord2: X,Y,U,V...

谢谢你。

0 投票
1 回答
1194 浏览

opengl - glMultiDrawElements:传递给“indices”参数的值(GLvoid**)

我必须将一些代码(处理为 2D 形状的轮廓构建数据的 VBO,即它们不仅仅是三角形网格,它们可以是任意长度的多边形轮廓)从使用原始重启转换为使用glMultiDrawElements. 我现在意识到glMultiDrawArrays实际上更适合我的应用程序,但这与问题无关(如果我更聪明并移植它来代替使用,我确实不会遇到这个奇怪的问题glMultiDrawArrays)。

我组装了两个向量来存储用于存储必要值的数据:

然后我所做的是为每个具有 N 个顶点的多边形将单个值推送到两个indiceslengths,在indices我插入的(char*)NULL+index位置index是 IBO 中与多边形的第一个顶点相对应的索引,并在其中lengths放置整数个顶点多边形。

E_MDEGBuffer结构用于传递值,glMultiDrawElements如下所示:

我测试了我的程序,渲染完全搞砸了。

最终,我稍微摆弄了一些硬编码的值glMultiDrawElements,我发现我的索引值偏离了 4 倍。

例如,第一个多边形有 3 个顶点,第二个多边形有 5 个顶点。

为了得到正确的结果,我的indices向量 contains[0,0xc]lengthscontains [3,5]

为什么indices不应该[0,0x3]

0 投票
2 回答
409 浏览

windows - 无法让 D3DPT_TRIANGLELIST 工作

当我尝试使用 D3DPT_TRIANGLELIST 时遇到问题。以下示例来自一本书,所以我看不出问题出在哪里。

顶点数据:

绘图功能:

但是,如果我从 D3DPT_TRIANGLELIST 更改为例如 D3DPT_LINELIST 它会画一条线。如果我使用 D3DPT_POINTLIST,它只会为每个 DrawPrimite 调用绘制一个点(像素)。

谢谢你的帮助!