问题标签 [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 回答
476 浏览

away3d - 为什么平面的顶点数据包含 52 个条目?

我是 3D 领域的新手,并且已经尝试了几种引擎以开始使用。我选择 away3D 是因为它很简单。

我正在创建一个平面并在其上粘贴纹理,并希望能够通过实时更改 UV 数据来为纹理设置动画。

这些行都返回 52:

据我在其他引擎中的理解,顶点数据包含每个顶点的 3 个值(x,y,z)。考虑到一个平面可以由 4 个或 6 个顶点构建,这将导致整个顶点数组有 12 个或 18 个顶点值。

UVData 数组通常包含每个对应顶点的 U 和 V 值,这将导致比顶点数组少的值。但是 UVdata 和 vertexData 数组在这里具有相同的长度。

我尝试在 away3D 论坛上提问,但没有得到回应,而且我对 3D 的了解仍然太少,无法理解任何 away3d 源代码。

谁能解释为什么 vertexData 和 UvData 包含这么多值,以及它们代表什么?

0 投票
2 回答
16116 浏览

opengl - 在openGL中纹理立方体的最佳方法

哪个是纹理立方体的最佳方式(最低内存,最快速度)?过了一会儿,我找到了这个解决方案:

数据结构:

绘图功能:

如您所见,结果是正确的: 立方体

但要恢复这个结果,我必须重新定义一些顶点(vertices数组中有 16 个 3D 点),否则纹理无法在 DrawElement 函数中映射。

有人知道在顶点数组中纹理立方体的更好方法吗?

0 投票
2 回答
1182 浏览

java - OpenGL:使用顶点数组渲染数千个立方体,效果不太好

我正在尝试使用顶点数组通过 LWJGL 渲染大约 2097152 个立方体(不是一次全部)。我已经实现了多种类型的多边形剔除,以将我的性能从大约 2 FPS 提高到大约 60 FPS。在整个项目中,我一直在使用即时模式渲染,我认为是时候升级了。这就是顶点数组的用武之地。

我不想使用 VBO,所以我现在一直在尝试 VAO。我似乎无法找到一种实用(或有效)的渲染方法。遗憾的是,我尝试的一切都比即时模式更差 FPS。每一帧我为每个具有可见多边形的立方体加载一个 FloatBuffer,然后使用常见的顶点数组方法绘制它们。这个设置让我很头疼,因为我得到的 FPS 比使用即时模式和不剔除任何多边形时要少。

我想我做错了什么。所以在你们这些聪明的、有抱负的 OpenGL/LWJGL 程序员中,有谁知道如何以更有效和高效的方式完成这项工作?

这是我的渲染代码(截断到不会太乱):

(忽略其中一些变量,它们只是剔除不同的多边形)

所以我不知道是否有更有效的方法来做到这一点,但如果有的话,如果我能得到一些指示会很好​​。提前致谢!哦,还有...

我的渲染方式有些严重错误。

0 投票
1 回答
512 浏览

java - 使用 VAO 的 JOGL 中的纹理是黑色的

到目前为止,我使用了已弃用的立即模式渲染,并且我正在尝试切换到 VAO,然后是 VBO。二维四边形通常使用 VAO 渲染,但是当我尝试附加纹理时,它仍然是黑色的。如果有人可以查看我的代码并指出我错的部分,我将不胜感激。

记录在案:我的 vcard 报告有(显然)支持 VAO 的 OpenGL 4.3.0。使用纹理立即渲染效果很好。

我真的很感激任何帮助。提前谢谢了。

0 投票
0 回答
240 浏览

ios - OpenGLES上的顶点数组对象(VAO)在构造后几乎立即神秘地变得无效

我在 iOS 上有一个非常奇怪的 VAO 问题。

问题是新创建的 VAO 在创建后几乎立即失效。

我有一段代码使用 glGenVertexArrayOES(1, &vao) 以通常的方式创建 VAO。然后绑定它(glBindVertexArrayOES),设置所有顶点绑定等,然后绑定零 VAO 以确保没有进一步的 glBind 调用意外写入它。如果此时我调用 glIsVertexArrayOES(vao),它会返回 true。

我的代码结构为作业图,其中作业被推入有序队列并被拾取以在线程池上执行。尽管如此,对于 OpenGL,我只在一个线程上执行调用 GL 的代码。我有线程亲和力来确保这一点。

现在。我的代码执行,生成 VAO,然后退出函数。然后它会选择下一个作业,在同一个线程上运行它,并尝试使用新创建的 VAO。如果我此时调用 glIsVertexArrayOES - 从字面上看,几乎是在构造后立即调用 - 它返回 false!

任何忽略它并使用它的尝试都会失败。

我在 glDeleteVertexArraysOES 上有一个断点,但没有被调用。太奇怪了……它成功地创建了一个 VAO,退出了一个函数,尝试在同一个线程上使用新创建的 VAO(从而避开上下文和共享组问题)并且失败了。

非常感谢任何帮助或见解!

0 投票
1 回答
1058 浏览

opengl - Haskell 中的 OpenGL VBO

基于这篇文章,我试图弄清楚如何在 Haskell 中使用 VBO。我试图填写那里没有涵盖的位:

你可以在这里找到完整的代码,以备不时之需。

master 分支上,相同的函数使用普通vertex调用来绘制,Sprites并且它工作得很好。但是使用 VBO,精灵就不存在了。我得到一个空白屏幕。

谁能向我解释我在这里做错了什么?

0 投票
1 回答
2029 浏览

opengl - OpenGL上的三角形渐变

我正在尝试制作如下图右侧的三角形:

三角形

问题是我想要实现的是来自 C 的顶点 1 和 2 的颜色渐变。

据我所知,这是不可能的,因为顶点 C 必须有自己的颜色,它也会混合成 1 和 2 的颜色,就像图片的左三角形一样。如果我将 C 设置为中间点颜色,则会产生不希望的结果,因为三角形越高,其他顶点的颜色就越不明显。

C1 线应为黑色,C2 线应为白色。

有没有办法在OpenGL中实现这一点?

0 投票
2 回答
5228 浏览

c++ - 使用 Wavefront Obj 了解法线索引

我编写了一个无法正常工作的 C++ Obj 文件加载器。问题是在解析一个简单的 obj 文件时,如下所示:

我无法理解将法线传递给 OpenGL 的正确方法。我总是得到这样的结果:在此处输入图像描述

ObjLoader.h

ObjLoader.cpp

我应该如何重新组织法线以使其反映顶点的相同顺序?

0 投票
0 回答
340 浏览

c++ - D3D9 创建一个圆

我之前发布了一个不同的问题,它给了我一个使用 D3DPT_TRIANGLEFAN 的错误,但我试图以不同的方式重新编码我的圈子。唯一的问题是它没有绘制到屏幕上......我已经尝试过调试它,但一切似乎都很完美,这很奇怪。这是我的整个“Circle”课程(这是一个更大的 Pong 游戏程序的一部分)

提前感谢您的帮助!

0 投票
2 回答
2112 浏览

3d - XNA - 绘制二维线

我已经看过http://msdn.microsoft.com/en-us/library/bb196414.aspx#ID2EEF 在这里他们解释了如何在 xna 中绘制 2D 线,但我得到了一个例外(见脚本)

但我不知道如何解决这个问题,因为这是我第一次使用 3d 渲染制作 2d 图形

背景:

我正在为 xna 制作一个 2d 游戏引擎,我想制作一个用于绘制简单图形的类,我已经知道您可以使用 1x1 Texture2D 像素技巧进行绘制,但我也想知道这种方式,因为否则 CPU 会在 GPU 可以轻松处理的同时进行所有计算。