问题标签 [vertex-array]

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 投票
3 回答
1086 浏览

c++ - 圆的顶点数组

我想知道是否可以在 SFML 中创建一个 VertexArray 圆。我一直在寻找答案,但我没有找到任何可以帮助的东西。此外,我不理解 SFML 文档中关于我可以创建自己的实体的部分,我认为这实际上可能是我想要做的。

编辑:我想这样做,因为我必须画很多圈。

谢谢你帮助我

0 投票
1 回答
2453 浏览

c++ - SFML 从 VertexArray 绘制图元

如何从构造的 VertexArray 中绘制我选择的图元?在下面的示例中,我将两个顶点添加到 'vertices' 数组中,并尝试使用 'window.draw(vertices, 2, sf::Lines)' 绘制它,但它给了我一个错误。我知道我可以使用 'sf::Vertex foo[] = {..}' 创建线对象,但我希望能够继续将顶点附加到数组而不是一次全部初始化。

0 投票
1 回答
515 浏览

android - 使用 OpenGL ES 2.0 渲染多个像素

从一开始就说明,我在 OpenGL 世界中非常新手,但我需要使用它在 Android 中进行一些渲染优化。我必须使用 OpenGL ES 2.0 在 2D 空间中渲染一个块或一堆连续像素。但是,我找到了一些合适的解决方案(此处此处),并且我都尝试了它们,但我无法达到预期的结果。

第一件事是像素总是在原点(中心或 {0, 0}),我不能从那里移动它。我宁愿把它放在屏幕的左上角。

第二件事是我无法绘制多个像素。我想产生多个像素,而不仅仅是一个。

总结一下:我只想将像素连续放置,例如:第一个像素从左上角开始,第二个应该紧跟在 X 轴上的第一个像素之后,依此类推。当满足屏幕的结束边距时,新像素应从新行 (Y+1) 开始。

我正在使用的代码是:

这是视觉结果:

应用代码的结果

0 投票
0 回答
73 浏览

c - OpenGL顶点数组未正确显示

我有一个 OpenGL 图形分配,出于某种原因,我试图在 X、Z 平面上创建一个平面正方形(每个顶点的 Y 仅为 1.0)。我尝试通过创建 2 个平面顶点而不是 4 个来缩小问题,并且由于某种原因,其中 2 个顶点似乎总是向负 y 方向移动。

这是运行时的样子:

快照

红线应该是 XZ 平面上的一条平线。

为了更简单,我正在尝试转换此代码:

进入一个顶点数组,这样我就可以通过每个顶点添加新元素/修改元素。因为到目前为止,我上方的代码显示了我需要看到的内容(二维正方形放置在 XZ 平面上)。

0 投票
1 回答
330 浏览

opengl - 在 DSA 代码的更新循环中是否使用 glBindVertexArray

我正在将一些opengl代码转换为DSA,并且在任何地方都编写了不绑定顶点数组,因为它在DSA中继承。所以我用

而不是 glGen... 对应物。

但是现在我只是想知道是否有在更新循环中绑定顶点数组的 DSA 版本。我现在有

这很好用。但是,如果我不将 替换glBindVertexArray为其他东西,我会在以后的编码中遇到一些有趣的问题吗?就像我替换glBindTextureglBindTextureUnit

0 投票
0 回答
35 浏览

c++ - 如何将波前 .obj 数据组装成最小尺寸的元素和顶点数组?

我无法将数据放在波前 .obj 文件中。

这些是vec3vec2定义

在向量中使用:

在哪里:

  • v_vec_index是 的索引,std::vector<vec3<float>> v_vec其字段包含顶点 x、y 和 z 坐标
  • vt_vec_indexstd::vector<vec2<float>> vt_vec包含纹理 u 和 v 坐标的索引
  • vn_vec_indexstd::vector<vec3<float>> vn_vec具有正常 x、y 和 z 坐标的索引

每个f_vec字段都用于在内部创建一系列vert_x, vert_y, vert_z, tex_u, tex_v, norm_x, norm_y, norm_z浮点值std::vector<float> vertex_array

此外,f_vec' 字段的每个索引默认情况下都是std::vector<uint32_t>> element_array- 的值,即它包含从0到的整数范围f_vec.size() - 1

问题是vec3里面的字段f_vec可能会重复。因此,为了只组装上面提到的独特序列,我计划转成这样:

进入这个:

每次都会将一个元素f_vec放入“ whatever container

  • 将检查它是否是唯一的

  • 如果是,那么它将被推到 的末尾,container其键是最大键之后的下一个自然数 - 键的值将被推到element_array并且将在内部创建新顶点vertex_array

  • 如果不是,那么它将被推到的末尾,container其密钥与其副本的密钥相同 - 密钥的值将被推到element_arrayvertex_array将保持不变

我该怎么做?

0 投票
1 回答
96 浏览

java - 绘制动态 GL_TRIANGLE_STRIP 的最快方法

经过一番努力,我设法使用 OpenGL 绘制了动态的飞机轨迹。您可能会在下面看到我的部分代码:

使用上面的代码,我可以绘制一条动态的 3D 带状轨迹。但我需要提高代码的性能。

我的第一个问题:如何在不创建新值的情况下动态更改 FloatBuffer 的值。我问这个,因为在每一帧中,一个新的 Vec4 (x,y,z) 被添加到位置列表中,我想使用我现有的 FloatBuffer。因为随着位置的增加,trail的长度越来越长,所以getTrailVertices方法中的循环越来越大。例如,当程序运行 10 分钟后,positionList 变为 15,000 位置的 ArrayList。这很可能会降低性能。除了创建一个新的 FloatBuffer 之外,我可以从末尾删除最后 2 个顶点并将另外 2 个顶点添加到 FloatBuffer 的开头而不创建一个新顶点吗?

第二个问题:这种动态绘图可以使用VBO吗?如果是这样,我该如何使用 VBO?

第三个问题:如何动态改变 FLoatBuffer 的容量。我问这个是因为我想在飞行中增加或减少路径的长度。这意味着,如果我增加轨迹的长度,我将需要更多的顶点和更高容量的 FloatBuffer,如果我减少轨迹的长度,这意味着我将需要更少的顶点和更低容量的 FloatBuffer。

最后一个问题:我怎样才能在轨迹上放置纹理。或者让我这样问;我怎样才能在小径的尽头画一条褪色的小径。我想我需要使用 alpha fading?

3D 飞机轨迹

0 投票
1 回答
435 浏览

c++ - C++ OpenGL,为什么顶点数组不绑定顶点缓冲区?

我很确定顶点数组没有绑定顶点缓冲区,因为如果我注释掉我取消绑定顶点缓冲区的行,它工作得非常好,这表明顶点数组没有正确绑定顶点缓冲区。这是代码(程序和窗口周围有一些抽象,但与问题无关):

有人知道我做错了什么吗?

0 投票
1 回答
137 浏览

c++ - 顶点着色器属性位置中的数据损坏

由于顶点着色器属性位置中的数据损坏,我的模型看起来被拉伸了

这是顶点着色器代码:

问题似乎是boneIDs 中的数据损坏(boneIDs 数据在 CPU 上很好,但在着色器中获取损坏的数据)。我尝试在着色器中硬编码 boneIDs 数据,效果很好。

这是 VAO 的代码:

BoneVertex 结构:

这很奇怪,因为前 3 个属性数据看起来不错。问题在于 boneIDs 和 boneWeights 这是否与填充有关,以及数据如何在结构中排列?还是我错过了其他东西?

谢谢

0 投票
0 回答
51 浏览

c++ - 瓦片地图SFML上的运动场显示

我试图编写一个代码,通过在英雄可以去的任何地方(英雄不能沿对角线移动)在瓷砖地图上绘制绿色矩形来绘制运动场。我读过这对我来说很难:https ://en.wikipedia.org/wiki/Taxicab_geometry但我仍然有问题。

这是一个类:

这是一个功能:

这是主要的代码:

如果我运行代码,只会出现一个矩形。我做错了什么?