问题标签 [vertexdata]
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.
iphone - iPhone OS 上 OpenGL ES 的首选顶点数据格式是什么?
在“使用 OpenGL ES 和 M3G 的移动 3D 图形”一书中,作者说选择正确的顶点数据格式将对性能产生巨大影响。他们建议对大多数顶点数据使用 GL_SHORT。这是否也适用于 iPhone 操作系统?
c# - 什么是与 api 无关的顶点处理的良好代码结构?
目前正在使用 C# 开发 3D 媒体引擎,我遇到了一个小难题。我已经弄清楚了我的渲染循环,我得到了一个很棒的插件架构和内容管理系统,甚至还有一个材料管道都计划好了。然后引擎计划使用 DirectX 和 OpenGL(通过“渲染器”插件),以及两个 API 的可编程管道。
无论如何,本周初我开始研究用于处理顶点的引擎抽象层(我已经为此担心了好几个星期了)。正如你们中的一些人所知,图形 API 之间的顶点处理完全不相关或相同。好吧,有点相关;),但不一样。在 OpenGL 中处理顶点非常简单,您创建自定义顶点结构,将其发送到 GPU,然后让着色器处理其余部分。这对于灵活的图形管道来说是完美的,OpenGL 不需要知道每个顶点包含哪些元素。另一方面,DirectX 要求我们为每个顶点结构创建声明,然后将它们发送到 GPU。
问题是我不知道正在传递什么类型的顶点结构,我绝对希望避免创建涉及通过枚举和一些抽象的“VertexDeclaration”类声明顶点的每个元素的抽象层;这会导致一些问题:
1) 至少可以说获取顶点元素会很痛苦。我可以使用一些'VertexSemantic'并询问顶点'a - z'的位置,但是当为骨骼动画之类的东西处理大量顶点时,它可能会有很多开销。
2) 考虑到引擎的主要关注点是“新手”,用户不太友好。我希望用户能够创建自定义顶点和网格缓冲区,而无需声明大量对象,从而消耗宝贵的开发时间。
3)更多?
现在我可以对属性做一些事情,然后在 DirectX 渲染器中为顶点结构创建声明。例如,继续创建一些枚举:
现在我可以创建一个属性,用户可以将其应用于顶点结构中每个元素的“字段”:
自定义顶点结构的示例:
这会很好。在 DirectX 插件(渲染器)中,我可以只创建一个实用程序类,该类可以为每种结构类型创建语义,然后缓存数据,因此不必为每个顶点重新创建声明。
我什至可以向 ELementUsage 添加一个 NONE 枚举值,以便可以将自定义值用于任何含义......但它们只能在 OpenGL 中工作,因为 DirectX 要求您标记每个顶点......除非我有什么失踪。
我的问题:
有没有更好的方法来解决这个问题(除了使用属性)?有没有办法避免在 DirectX 中使用 VertexDeclarations?关于“我的”问题,您有什么不明白的地方吗?
编辑:
使用属性的一个问题是从每个顶点获取元素数据。假设我想获取网格缓冲区中每个顶点的位置。由于我使用属性,我不能只做'vertex.Position',我必须创建一个可以从顶点结构中提取字段引用的实用程序方法,例如'Utility.GetElement(vertex,ElementUsage.POSITION)' . 此方法需要使用反射首先找到属性,然后返回对字段值的引用。甚至(我认为)不可能设置该值?
另一种方法是创建一个 IElement 接口并实现每个元素(Positon、Normal 等)。该接口可以具有 Name 属性,我可以直接在继承的元素结构中返回它,就像 PositionElements 的 Name 属性只会返回“Positon”。
接下来,我可以将 IElement 数组保存在 Vertex 结构中,该结构包含 AddElement(IElement)、GetElement(string name)、GetElement(int index)、Insert、Replace 等方法。我将实现 DirectX 已知的所有元素,以便渲染器插件可以解析一个顶点结构来创建一个顶点声明数组。
问题是我不确定数组“[]”是否可以用作顶点元素数据。比如,数组包含哪些其他字节(如果有)会阻碍我将 Vertex 结构(包含 IElement 数组)直接传递给 DirectX,然后传递给 GPU?
以这种方式实现它对于我需要它来说绝对是完美的。另一个问题是 IElement(元素)的继承类型可以是一个类,还是元素值必须是值类型?
opengl - OpenGL顶点缓冲区混淆
有人愿意解释一下VertexBuffer、VertexArray、VertexBufferObject和VertexArrayObject之间的区别吗?我什至不确定这些是否都是不同事物的术语,但我已经看到它们都出现在 OpenGL 规范中。
我知道VertexBuffer只包含顶点而没有其他任何东西,一旦绑定,一旦我设置了顶点指针,我就可以使用 DrawArrays 来绘制它。我已经多次这样做了。
我正在使用我认为是 VertexArray 的东西,它存储设置的任何顶点缓冲区的状态,以及任何顶点指针。绑定 VertexArray 会自动绑定顶点缓冲区并设置顶点指针。我也(大部分)成功地使用了这个。
但是什么是VertexBufferObject和VertexArrayObject?他们更好吗?VertexArray 没有给我我需要的一切吗?
opengl - 关于 GL_VERTEX_ARRAY 的问题
这只是出于兴趣,但是 GL_VERTEX_ARRAY 将“保持”并通过 drawArrays() 之类的东西渲染的顶点数量是否有限制?或者我理论上可以通过几百万个顶点并且仍然能够调用drawArrays()?
opengl - 有没有办法将通用顶点属性获取到 Mac 上的 OpenGL 着色器构建器中?
我正在寻找一种在 Mac 上为我的游戏引擎开发着色器的方法。我遇到了 OpenGL Shader Builder 应用程序,除了一件事之外,它看起来真的很棒。我想不出一种在构建器中使用通用顶点属性的方法。
GLSL Shader Builder 适用于所有预定义的 OpenGL 顶点属性(gl_Normal、gl_Color、gl_TexCoord、gl_MultiTexCoordX 等),但我希望能够在着色器中定义自己的顶点属性,然后通过某种方式传入一组构成模型的通用顶点数据。这样我就可以使用 GLSL 着色器构建器独立开发着色器,只要我有一组顶点属性可以传递给着色器。
directx - DirectX 如何读取顶点?
因此,我浏览了一些教程和资源,例如 DirectX 文档/参考本身,要么我错过了一些东西,要么我真的找不到我的问题的答案。
问题如标题所述:DirectX 如何将 Vertices 读入 Vertex Buffers?
当然,我知道您必须提供一个或多个 FVF 代码。但它没有说明如何正确设置您的 Vertex 结构。当然,我唯一能想到的是,DirectX 在线性“时间线”中检查标志,因此可能需要相同数据类型和顺序的标志也必须位于结构的首位。
作为我的意思的一个小例子:
!=
使用 FVF 代码:
和nx
, ny
,nz
表示法线顶点的 3D 坐标。
任何有关如何正确设置顶点结构的帮助表示赞赏...
真挚地,
德里哈
r - 从数据框到顶点/边数组
我有数据框
并且我需要创建一个顶点/边列表(用于 igraph),每次学生类别在连续几年发生变化时,而在没有变化时忽略,如
在这一点上,我忽略了 id,我的图表应该按计数加权边缘(即新生 -> 初级 =3)。这个想法是制作一个树形图。我知道它在主要的改造点旁边,但如果你问的话……
r - 为网络图中的顶点分配一个(数字实数)值
我想为网络图中的每个节点分配或关联一些实际值(比如一些分数)R
. 需要在迭代中更新。最后根据其最新值(分数)绘制具有顶点大小的网络图。
我可以将顶点的哪个属性用于此目的以及如何使用?如果在 中不可能igraph
,是否有任何其他方法可以实现此目的R
吗?
我是新手R
。任何人都请帮我解决这个问题。
opengl-es-2.0 - glVertexAttributePointer 范围?
我目前正在 iOS 和 Android 平台上编写 OpenGL ES 2.0 应用程序。
在这个应用程序中,我渲染了多个都使用 VBO 的网格。在优化渲染的过程中,我意识到我渲染的网格共享两种顶点格式。所以我想做以下事情:
首先,设置所有顶点属性指针偏移量,然后简单地绑定每个使用这种顶点格式的 VBO 并渲染它,而无需glVertexAttribPointer
再次调用该函数。
但它给了我奇怪的结果。
glVertexAttribPointer
我的问题是:每次我们绑定一个新的 VBO 时都必须调用吗?
three.js - 几何顶点数据可以跨三个.js 功能区共享吗?
我有一大组顶点,这些顶点是通过对从心脏 MRI 切片中提取的心脏轮廓进行插值生成的,这些切片通常形成圆柱形。在当前 (C++) 可视化中,顶点数据保存在单个数组中,模型中的每个横向条带都呈现为三角形条带。
我想知道是否有一种方法可以跨多个功能区共享几何顶点数据,并避免为每个条带创建单独的几何对象(从而复制顶点数据)。