问题标签 [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 投票
2 回答
1050 浏览

c++ - Qt 顶点数组不适用于 QImage

我将首先为问题的长度道歉。我相信我犯了一些小的、愚蠢的错误,但由于我完全找不到它,我决定发布所有相关代码以防万一。

我终于可以使用 QImage 进行纹理加载,并且能够在即时模式下渲染纹理。但是,顶点数组不起作用,我不知道为什么。最明显的事情是“你启用了顶点数组和纹理坐标数组吗?” 可能不是答案。我将发布初始化代码。

这是初始化函数:

我有由 QGLWidget 调用的初始化、调整大小和绘制函数(它本身只是一个调用实际工作函数的骨架)

纹理加载功能:

这是绘制代码:

感谢您的所有帮助,Dragonwrenn

0 投票
4 回答
5406 浏览

geometry - 如何在简单的非凸多边形中对顶点进行排序

我有一个问题,我有一系列简单的非凸多边形的点(我希望我的术语是正确的)。但这些点不一定是按顺序排列的(即顺时针或逆时针)。为了让 Flash 的绘图 API 正确绘制填充区域,我需要让这些点在边缘周围按顺序排列(最终与起点连接)。

有什么方法可以按顺时针或逆时针方向对笛卡尔坐标列表进行排序,这样我就可以在不“举笔”的情况下从一个点到另一个点绘制我的形状?

我看到一篇文章对多边形的 4 点进行排序,但我认为这只是 4 点的特例。我的形状至少有 6 分。在列表中,每个条目都保证与其相邻的至少一个相邻(顺时针或逆时针顺序)相邻(前一点或后一点)。例如:A、B、D、C... 或 B、A、D、C... 但不是A、C、B、D...(我需要排序,所以我得到 A、B、C , D 或 D, C, B, A)。我找到了这篇文章,但似乎没有答案:将点列表排序为多边形

CPU性能是个问题。但是,即使是一个“缓慢”的解决方案,如果它易于实现和理解(对于下一个程序员),如果我能想出一个有效的缓存机制,也可能没问题。

我想附上一张图片来展示我需要做什么但还没有 10 个声望点的例子。无论如何,如果我有办法在这个多边形列表中对第三个示例的顶点进行排序,那将是完美的:http: //upload.wikimedia.org/wikipedia/commons/1/1f/Assorted_polygons.svg

我真的很感激任何和所有的帮助,谢谢!

编辑:我确实可以保证坐标系的中心点——它将是屏幕的中心。所有点都将介于 0 和屏幕宽度/高度之间(原点显然是宽度/高度 / 2)。我不能保证多边形将在其内部包含原点。这是一个罕见的例外情况,但我需要考虑它。

顺便说一句,我的片段不一定按顺序排列的原因是因为它们是使用 Conrec 生成的:http://paulbourke.net/papers/conrec/ 它们是等高线)。我使用以下命令对 Conrec 生成的轮廓线段进行排序:如何使用 Conrec 为轮廓线组装连续点的数组 现在的问题案例是地图上的外轮廓线。这些将与地图的边缘相交(即,不形成封闭的多边形)。在这种情况下,我在地图边界的边缘绘制,直到我重新连接线开始的位置(在地图的边缘)或兄弟线进入地图(重复直到我最终回到我的起点观点)。然后我可以绘制一个区域并让填充 API 工作。希望这些信息有所帮助。我认为最好的办法是生成多边形顶点的有序列表,但也许需要另一种方法。

0 投票
1 回答
4915 浏览

opengl - 将 OpenGL 绘制列表转换为顶点数组或 VBO

我正在尝试使用在 OpenGL 3.0+ 中不推荐使用的绘制列表转换程序,以使用顶点数组或 VBO,但我没有找到任何有关如何进行转换的示例。

现在程序中的内容是这样的(可能是 Python,但我真正感兴趣的是适当的 OpenGL 调用——例如,它也可以是 C++):

我们将纹理映射到一个矩形上。然后我们在某处绘制它:

如何将其转换为使用顶点数组?VBO?

0 投票
2 回答
4164 浏览

opengl - OpenGL顶点缓冲区混淆

有人愿意解释一下VertexBufferVertexArrayVertexBufferObjectVertexArrayObject之间的区别吗?我什至不确定这些是否都是不同事物的术语,但我已经看到它们都出现在 OpenGL 规范中。

我知道VertexBuffer只包含顶点而没有其他任何东西,一旦绑定,一旦我设置了顶点指针,我就可以使用 DrawArrays 来绘制它。我已经多次这样做了。

我正在使用我认为是 VertexArray 的东西,它存储设置的任何顶点缓冲区的状态,以及任何顶点指针。绑定 VertexArray 会自动绑定顶点缓冲区并设置顶点指针。我也(大部分)成功地使用了这个。

但是什么是VertexBufferObjectVertexArrayObject?他们更好吗?VertexArray 没有给我我需要的一切吗?

0 投票
1 回答
3515 浏览

opengl - OpenGL:使用顶点数组绘制立方体会导致图形故障

当尝试使用顶点数组(而不是使用立即模式渲染)在 OpenGL 中绘制以下四边形时,我得到了图片中显示的图形故障(线段),可以在下面的第二个链接中找到。这条线似乎向上延伸到无穷大。

即时绘图:

用顶点数组绘制:

图片:

在立即模式下绘制的正确立方体

用顶点数组绘制的故障立方体

我究竟做错了什么?

0 投票
1 回答
12635 浏览

opengl - 使用 glDrawElements 很难理解索引

我正在尝试绘制地形,GL_TRIANGLE_STRIP但是glDrawElements我很难理解背后的索引glDrawElements...

这是我到目前为止所拥有的:

我相信我vArray是正确的,我在绘图时使用相同的值glBegin(GL_TRIANGLE_STRIP)/glEnd,效果很好。

我的猜测是只使用每个x顶点的坐标索引。但我不知道这是否是使用索引的正确方法glDrawElements

  • 0:从三角形第一个顶点开始的 x 坐标索引。位置:(-128,-128)。
  • 768:从三角形的第二个顶点开始的 x 坐标的索引。位置:(-128,-127)
  • 3:从三角形第三个顶点开始的 x 坐标索引。位置:(-127,-128)
  • 771:从第四个顶点开始的 x 坐标的索引,它将绘制第二个三角形。位置:(-127,-127)。

我认为到目前为止一切都有意义吗?

不起作用的是上面的位置值(我加倍检查vArray并且它们是正确的)与glDrawElements正在使用的不同。绘制了两个三角形,但它们比应有的大得多。它正确地从 (-128, -128) 开始,但它会变成 (-125, -125) 而不是 (-127, -127)。

我不明白我在这里做错了什么......

0 投票
1 回答
1407 浏览

opengl - glDrawArrays:什么时候完成?

伪代码:

我没有使用 VBO,因为我想支持较旧的 OpenGL 实现。

调用 glDrawArrays 后,我想:

  • 释放我的顶点数组(“ delete vertices;”)
  • 也许修改一些顶点

但是,GL 可以自由地异步执行 glDrawArrays,在完成之前释放或修改我的数组是不安全的。

我可以做一个 glFinish 来确保这一点,但它会减慢应用程序的速度。

那么在什么时候我可以自由地释放/修改我的顶点数组?

0 投票
2 回答
760 浏览

colors - 顶点数组中的OpenGL ES2 GLubyte颜色不起作用

Apple 建议在 iOS 上对颜色数据使用 GLubyte 数据类型,所以我试图让它工作。我得到的结果是所有 <255 的颜色分量都是完全黑色的,只有设置为 255 的颜色分量才是真正的颜色。

我在做什么: - 将单个对象的颜色保存在我自己的 GLubytes 颜色类中(范围 0-255) - 将颜色传递给 GLubyte 类型的顶点属性数组中的着色器(范围仍为 0-255) - 在片段着色器,直接使用颜色或将组件除以255,两者都不起作用。

编辑:这确实有效,问题出在我的代码中的其他地方。

0 投票
1 回答
1384 浏览

ios - OpenGL ES2 顶点数组对象帮助

我无法理解如何在 OpenGL ES2(在 iOS 上)中使用 VAO 并让它们工作。我当前的渲染设置如下所示(在伪代码中):

初始化:

渲染一个框架:

这很好用,但是,两个 VBO 都具有完全相同的交错顶点属性结构,并且如您所见,我正在为每个 VBO 的每一帧设置和启用每个属性。Instruments 抱怨对 glVertexAttribPointer() 和 glEnableVertexAttribArray() 的冗余调用,但是当我将其中一个或两个移动到初始化阶段时,我要么在调用 glDrawElements 时得到 EXC_BAD_ACCESS,要么什么都没有绘制。

我的问题是我是否需要在每一帧都这样做,如果我不这样做为什么它不起作用,以及我将如何使用 VAO 来解决这个问题。

0 投票
1 回答
8204 浏览

opengl - OpenGL顶点缓冲区对象,我可以访问顶点数据以用于其他用途,例如碰撞检测吗?

我目前正在使用 Superbible 第 5 版附带的 GLTools 类。我正在查看 GLTriangleBatch 类,它具有以下代码:

据我了解,代码传递指针 pVerts、pNorms、pTexCoords、pIndexes 的数组并将它们存储在顶点数组对象中,该对象本质上是顶点缓冲区对象的数组。这些存储在 GPU 的内存中。然后删除原始指针。

我有兴趣访问顶点位置,它们保存在 pVert 指向的数组中。

现在我的问题围绕着碰撞检测。我希望能够访问我的 GLTriangleBatch 的所有顶点的数组。我可以vertexBufferObject稍后使用某种 getter 方法通过 获取它们吗?最好只保留 pVerts 指针并为此使用 getter 方法吗?我在考虑性能方面,因为我希望将来实现一个 GJK 碰撞检测算法......