问题标签 [vertex]

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 回答
6292 浏览

opengl - OpenGL着色语言不同类型的变量(限定符)

我一直在使用 OpenGL 编写程序。最近,我开始学习 OpenGL 着色语言。我是新手;所以请在你的答案中详细说明。

我的问题是:

  1. GLSL 中有哪些不同类型的变量(限定符)?
  2. 它们是用来做什么的?
  3. 它们彼此有何不同?

我只熟悉从顶点着色器传递到片段着色器以在顶点之间插值的“变化”变量。除此之外,我什么都不知道。

0 投票
1 回答
8204 浏览

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

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

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

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

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

0 投票
2 回答
443 浏览

c++ - 在OpenGL中处理顶点的最佳技术?C++

我正在为 Quake 实现一个地图渲染器。我目前正在遍历顶点数组并一次发送一个。有人告诉我,通过使用顶点数组,我可以通过批量发送顶点来大大加快渲染过程。现在,我刚刚查看了显示列表,最后查看了 VBO 或顶点缓冲区对象。VBO 提到了与客户端/服务器通信相关的巨大优势。如果我只是要开发客户端而不是服务器,VBO 是否仍然适用于我正在做的事情?

目前在 OpenGL 频谱中使用哪些游戏来进行快速顶点处理?

0 投票
2 回答
463 浏览

c# - 在正在绘制的顶点上看不到纹理或颜色

我在 OpenTK 中有以下代码:

我知道为顶点和 uv 提供的数据是正确的(至少它们在我的 XNA 渲染器中工作正常)并且我看到的是在屏幕上正确绘制了白色多边形。

从我上面的代码中,我应该看到各种各样的颜色,因为我正在用随机数量的字节填充 squareColours(我已经验证 squareColors 被随机字节填充)但我不是,顶点都是绘制为白色。

我也尝试过绑定纹理(通过 GL.BindTexture),但也失败了。

任何想法为什么这不起作用?

编辑:当我添加启用颜色时(请参阅这篇文章的第一条评论),应用程序崩溃并显示以下输出:

堆栈跟踪:

在 OpenTK.Graphics.ES11.GL.DrawArrays (OpenTK.Graphics.ES11. All,int,int) [0x00000] in /Users/plasma/Source/iphone/monotouch/OpenGLES/OpenTK/Graphics/ES11.iPhone/GL.cs:1326 at Jabber.J3D.Shape.Draw_IOS () [0x00171] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/J3D/Shape_iOS.cs:136 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine 中的 Jabber.J3D.Shape.Draw () [0x00000] /J3D/Shape.cs:255 在 Jabber.J3D.PhysicShape.Draw () [0x00000] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/J3D/PhysicShape.cs:46 在 Jabber.Scene.GameScene .Draw () [0x0001d] 在 Jabber 的 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/Scene/GameScene.cs:299 中。GameScreenManager.Screen.Draw () [0x0001f] in /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/GameScreenManager/Screen.cs:150 at ChicksnVixens.Screens.GameplayScreen.Draw () [0x00000] in /Users/ ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/ChicksnVixens/Screens/GameplayScreen.cs:481 在 Jabber.GameScreenManager.ScreenManager.Draw () [0x00054] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/GameScreenManager/ ScreenManager.cs:92 在 Jabber.BaseGame.Draw (Microsoft.Xna.Framework.GameTime) [0x0002c] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/Engine/BaseGame.cs:95 在 ChicksnVixens.ChicksnVixensGame.Draw (Microsoft.Xna.Framework.GameTime) [0x00000] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/MyCode/ChicksnVixens/ChicksnVixensGame.cs:414 在 Microsoft.Xna.Framework.Game.DoDraw (Microsoft.Xna.Framework.GameTime) [0x0001e] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnCommon/Game/GameCommon.cs:205 在 Microsoft.Xna .Framework.ExEnEmTouchGameView.OnRenderFrame (OpenTK.FrameEventArgs) [0x0002e] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnEmTouch/ExEnEmTouchGameView.cs:329 在 OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000af]在 /Users/plasma/Source/iphone/monotouch/OpenGLES/OpenTK/Platform/iPhoneOS/iPhoneOSGameView.cs:592 在 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] 在 /Users/plasma/Source/iphone/monotouch/ shared/Foundation/NSAction.cs:45 at (wrapper runtime-invoke) object.runtime_invoke_void_GameTime) [0x0001e] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnCommon/Game/GameCommon.cs:205 在 Microsoft.Xna.Framework.ExEnEmTouchGameView.OnRenderFrame (OpenTK.FrameEventArgs) [0x0002e] 在 /Users/ ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnEmTouch/ExEnEmTouchGameView.cs:329 在 /Users/plasma/Source/iphone/monotouch/OpenGLES/OpenTK/Platform/ 中的 OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000af] iPhoneOS/iPhoneOSGameView.cs:592 在 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] 在 /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction.cs:45 在(包装运行时调用)对象。 runtime_invoke_void_GameTime) [0x0001e] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnCommon/Game/GameCommon.cs:205 在 Microsoft.Xna.Framework.ExEnEmTouchGameView.OnRenderFrame (OpenTK.FrameEventArgs) [0x0002e] 在 /Users/ ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnEmTouch/ExEnEmTouchGameView.cs:329 在 /Users/plasma/Source/iphone/monotouch/OpenGLES/OpenTK/Platform/ 中的 OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000af] iPhoneOS/iPhoneOSGameView.cs:592 在 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] 在 /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction.cs:45 在(包装运行时调用)对象。 runtime_invoke_void_OnRenderFrame (OpenTK.FrameEventArgs) [0x0002e] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnEmTouch/ExEnEmTouchGameView.cs:329 在 OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000af] 在 /Users/plasma /Source/iphone/monotouch/OpenGLES/OpenTK/Platform/iPhoneOS/iPhoneOSGameView.cs:592 在 /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction 中的 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] .cs:45 at (wrapper runtime-invoke) object.runtime_invoke_void_OnRenderFrame (OpenTK.FrameEventArgs) [0x0002e] 在 /Users/ahmedhakeem/Documents/Projects/JabberEngine2/ExEn/ExEnEmTouch/ExEnEmTouchGameView.cs:329 在 OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000af] 在 /Users/plasma /Source/iphone/monotouch/OpenGLES/OpenTK/Platform/iPhoneOS/iPhoneOSGameView.cs:592 在 /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction 中的 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] .cs:45 at (wrapper runtime-invoke) object.runtime_invoke_void_592 在 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] in /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction.cs:45 at (wrapper runtime-invoke) object.runtime_invoke_void_592 在 MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] in /Users/plasma/Source/iphone/monotouch/shared/Foundation/NSAction.cs:45 at (wrapper runtime-invoke) object.runtime_invoke_void_这个_ (object,intptr,intptr,intptr) at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) 在 MonoTouch.UIKit.UIApplication.Main (string[] ,string,string) [0x00038] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:26 at ChicksnVixens.Program.Main (string[]) [0x00000] in /Users/ahmedhakeem/Documents/Projects /JabberEngine2/MyCode/ChicksnVixens/MonoTouch Program.cs:24 at (wrapper runtime-invoke) .runtime_invoke_void_object (object,intptr,intptr,intptr)

本机堆栈跟踪:

0 aChicks
0x000c5d00 mono_handle_native_sigsegv + 343 1 aChicks 0x0000fce0 mono_sigsegv_signal_handler + 322 2 libSystem.B.dylib 0x95fee48b _sigtramp + 43 3 ???
0xffffffff 0x0 + 4294967295 4
GLEngine
0x08645753 gleLLVMArrayFunc + 67 5
GLEngine
0x0863cba2 gleDrawArraysOrElements_ExecCore + 856 6 GLEngine
0x08642bbe glDrawArrays_IMM_Exec + 332 7 OpenGL glES 0x0087c8 OpenGLDrawArrays
8 + OpenGLDrawArrays 0x0c3c9b34 0x0 + 205298484 9 ???
0x0c3c9a9c 0x0 + 205298332 10 ???
0x0f0956c8 0x0 + 252270280 11 ???
0x0f0939c4 0x0 + 252262852 12 ???
0x0f09397c 0x0 + 252262780 13 ???
0x0ecdb286 0x0 + 248361606 14 ???
0x0c3c709a 0x0 + 205287578 15 ???
0x0f0927c4 0x0 + 252258244 16 ???
0x0c3c44cd 0x0 + 205276365 17 ???
0x0c3c3fed 0x0 + 205275117 18 ???
0x0c3c3e9a 0x0 + 205274778 19 ???
0x0c3c3d73 0x0 + 205274483 20 ???
0x0cc03166 0x0 + 213922150 21 ???
0x0cbfd578 0x0 + 213898616 22 ???
0x0cbfd130 0x0 + 213897520 23 ???
0x05e861e8 0x0 + 99115496 24 aChicks 0x0000fa9b mono_jit_runtime_invoke + 1332 25 aChicks
0x001d9f01 mono_runtime_invoke + 137 26 aChicks
0x0027e52b monotouch_trampoline + 2527 27 基础
0x00619749 NSFireTimer + 125 28的CoreFoundation
0x014398c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION
+ 19 29的CoreFoundation 0x0143ae74 __CFRunLoopDoTimer + 1220 30的CoreFoundation
0x013972c9 __CFRunLoopRun + 1817 31的CoreFoundation
0x01396840 CFRunLoopRunSpecific + 208 32的CoreFoundation
0x01396761 CFRunLoopRunInMode + 97个33 GraphicsServices
0x028bc1c4 GSEventRunModal + 217个34 GraphicsServices
0x028bc289 GSEventRun + 115 35的UIKit 0x008abc93 UIApplicationMain + 1160 36 ???
0x05e84b8b 0x0 + 99109771 37 ???
0x05e83fb4 0x0 + 99106740 38 ???
0x05e83cee 0x0 + 99106030 39 ???
0x05e83e46为0x0 + 99106374 40 aChicks 0x0000fa9b mono_jit_runtime_invoke + 1332 41个aChicks
0x001d9f01 mono_runtime_invoke + 137 42 aChicks
0x001dc560 mono_runtime_exec_main + 669 43 aChicks
0x001db96e mono_runtime_run_main + 843个44 aChicks
0x0009cdd2 mono_jit_exec + 200个45 aChicks
0x00003362主+ 3838 46 aChicks
0x00002249 _start + 208个47 aChicks 0x00002178
开始+ 40

来自 gdb 的调试信息:

/tmp/mono-gdb-commands.ZEI8zH:1:源命令文件中的错误:无法自我调试

0 投票
1 回答
841 浏览

c# - 生成的 Icosphere 上的尖峰顶点

我一直在研究一个生成 icosphere 的程序。(一个在整个面上具有均匀分布顶点的球体,用于地形变形)

我几乎完成了所有工作,球体已生成、细分和绘制。我遇到的问题是在代码中的某个地方,一些顶点(我相信十二个起始顶点)被设置为半径的两倍,而不仅仅是半径。

这是三张图像,显示了 icosphere 在零、一和两次细化通道:

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/Ico0Refinement.png

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/Ico1Refinement.png

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/Ico2Refinement.png

这是生成二十面体的代码,然后将其分解为二十面体:

这是保存三角形数据的 TriXYZ 类:

任何帮助将不胜感激。我想这很简单,我似乎无法找到问题所在。

0 投票
2 回答
227 浏览

3d - 从 Google 的 3D 仓库下载的 Mesh 渲染异常

我从 3D Warehouse 下载了这个模型:http: //sketchup.google.com/3dwarehouse/details ?mid=a4295f6b93a3e11488961f28097fe890&prevstart=0

现在,当它使用 OgreAssImp 包装器通过 Open Asset Import 库导入时,我遇到了以下网格问题:带有奇怪向量的网格

因此该模型从 Collada 网格转换为 Ogre 网格,然后在屏幕上渲染。这可能与未正确处理的顶点有关。我不太清楚应该如何正确处理这些 3d 事物,这就是我使用上面提到的 OgreAssImp 包装器的原因。

我依靠训练有素的眼睛给我一些可能导致该问题的提示。许多其他 3DWH 模型显示正确,其中大约 90%。此外,当我在搅拌机中测试该模型时,它表现得很好。

所以如果有人能给我一些线索会很好:)提前谢谢

-乔尼

0 投票
1 回答
1115 浏览

opengl-es - iOS OpenGL ES .obj 加载单位立方体后翻转计算的面法线

我正在尝试将模型从 Maya 导出并加载到一个非常简单的 iOS OpenGL ES 设置中。为此,我编写了一个 ruby​​ obj 解析器,它基本上采用顶点和法线并将它们计算成一个我简单地包含的 C 头文件。简单三角单位立方体的输出是以下结构:

Vertex3D 的定义是

现在我需要重新计算我的顶点法线,因为我想要动画一些顶点的运动。为此,我只是将所有连接的顶点索引添加到每个顶点,这就是 connected_faces 索引数组的用途。

对于计算,我只需用叉积计算所有面法线。为此,我只需要使用存储在 Index3D 中的 3 个顶点,加载位置,减去第一个顶点,这样我就有了向量并计算叉积。然后我将属于这个顶点的所有叉积相加,并对向量进行归一化,这是我最终的顶点法线。

我遇到的问题是,碰巧有2个面具有相同的面法线,例如三角立方体总是有2个分割四边形的三角形,该面的法线方向相反。如果我将它们相加,以便稍后计算,它们的总和当然是 N​​ull-Vector。我知道发生这种情况是因为在某些情况下 2 个顶点没有正确的顺序,这意味着 A 应该替换为 B,但我不知道我必须翻转哪个。

有什么数学方法可以估计法线的走向,以及我是计算 AxB 还是 BxA?我在 Maya 中仔细检查了法线,它们在那里非常完美。

编辑:我现在订购了连接的面,效果很好。我正在使用以下方法计算法线:

但是现在我遇到的问题是,通过三角剖分,有时我有 2 条法线指向完全相同的方向,这不会导致我预期的 { 0.33f, 0.33f, 0.33f } 顶点法线。这是正确的行为,还是有其他方法可以计算?

非常感谢您的帮助!

0 投票
1 回答
89 浏览

c - 我应该为精灵创建什么样的顶点?

我正在使用 OpenGL 和 C 创建一个 2D 渲染引擎。我正在学习 VBO 以及如何将它们用于非即时模式渲染。我一直在阅读:http ://www.opengl.org/wiki/Vertex_Buffer_Object

本教程建议以下内容:

我不需要法线值,我不确定单个顶点如何或为什么有三个纹理坐标。

我认为我只需要顶点 (XYZ) 和一个 Texcoord (s0, t0 <-- 仍然不知道这些是什么意思)。

0 投票
1 回答
3115 浏览

iphone - OpenGL ES 2.0 - 在顶点着色器中找不到属性

我已经为此寻找了一段时间的答案-但我运气不佳。我要做的就是将我的正常数据传递到我的顶点着色器中。位置正确传递,但是在尝试加载着色器时收到“未找到正常属性”错误。

我的 ATTRIB 值是枚举。

我在 OpenGL ES 2.0 中为 Iphone 开发创建了一个立方体。

我的 Shader.vsh 看起来像这样:

我在并条框中更新属性值的部分如下所示:

我在 LoadShader 函数中绑定这些的部分是这样的:

再次,该职位有效。但是找不到“正常”。有任何想法吗?

0 投票
1 回答
2853 浏览

shader - OpenGL ES 2.0 与 iPhone:GL_POINT_SMOOTH 使用 ES 2.0 绘制正方形,但在 ES 1.0 中有效

我正在尝试通过使用顶点缓冲区对象来绘制圆,以在 iPhone 上的 OpenGL ES 2.0 中启用 GL_POINT_SMOOTH 来绘制点。

我使用以下 ES 1.0 渲染代码在 iPhone 4 上成功绘制了圆圈:

我现在尝试使用设置 VBO 后跟此 ES 2.0 渲染代码来实现相同的效果:

然而,输出顶点非常明显是方形的,而不是圆形的。

我尝试减少上面的“glEnable”和相关调用来模拟第一个工作版本,但输出没有明显变化;形状仍然是方形的。我还尝试将“glDrawElements”调用替换为:

..但同样没有变化。

顶点着色器中设置点大小,着色器编译成功并运行:

有谁知道为什么不使用 glDrawElements VBO 版本绘制圆圈?