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

java - 在 OpenGL 中制作 2D 地形的问题

前段时间我问过这个问题,关于如何使用 opengl 顶点制作 2D 地形。我得到了一个很好的答案,但是在尝试时它没有画出任何东西,我不知道出了什么问题,或者如何解决它。

我现在有这个:

这是由 Libgdx 渲染的,它也提供了类 Mesh,但这并不真正相关,因为我相信它可以正常工作。我的问题在于顶点和索引的生成。我也不知道如何调试它,所以任何人都可以看看它,并帮助我找出为什么什么都没有渲染?

0 投票
1 回答
1183 浏览

c++ - DirectX - 使用顶点数组作为参数创建缓冲区

今天我开始使用 DirectX(D3D9),一切都很顺利,直到我创建了一个静态网格类。此类包含用于生成缓冲区、绘制和释放缓冲区的方法。

问题出在缓冲区生成函数中。如果我想将顶点数组作为参数传递给函数,则在绘制时不会绘制三角形(用三角形测试),但是,如果顶点是在函数中声明的(与作为论点),则不绘制三角形。

顶点类:

顶点缓冲区生成函数(不起作用):

顶点缓冲区生成函数(确实有效):

我看不出有什么问题。感谢您的帮助,如果需要更多信息,请告诉我。

0 投票
1 回答
586 浏览

opengl - glDrawElements 中如何处理索引数据?

我知道当 glDrawElements 被调用时,它使用索引缓冲区来确定以什么顺序绘制哪些顶点。我的问题是这些索引如何应用于纹理、法线和颜色属性。是否可以为每个顶点应该使用的纹理坐标和法线设置另一个索引数组。或者我是否必须创建法线和纹理坐标缓冲区,以便它们与正在绘制的顶点对齐?

0 投票
1 回答
3211 浏览

objective-c - OpenGL ES - 如何批量渲染 500 多个具有不同 alpha、旋转和缩放的粒子?

我正在开发一个需要一次渲染 500-800 个粒子的 iOS 游戏。我了解到,在 OpenGL ES 中批量渲染许多精灵是一个好主意,而不是调用glDrawArrays(..)游戏中的每个精灵,以便能够在不大幅降低帧速率的情况下渲染更多精灵。

我的问题是:如何批量渲染 500 多个具有不同 alpha、旋转和比例但共享相同纹理图集的粒子?这个问题的重点是每个粒子的不同 alphasrotationsscales

我意识到这个问题与How do I draw 1000+particles (w/unique rotation, scale, and alpha) in iPhone OpenGL ESparticle system without slowing the game非常相似?,但是,该问题并未涉及批量渲染。在我利用顶点缓冲区对象之前,我想了解 OpenGL ES 中的批处理渲染,带有唯一的 alpha、旋转和缩放(但具有相同的纹理)。因此,虽然我最终计划使用 VBO,但我想首先采用这种方法。

代码示例将不胜感激,如果您像某些示例一样使用索引数组,请解释索引数组的结构和用途。

编辑我正在使用 OpenGL ES 1.1。

编辑下面是我如何渲染场景中每个粒子的代码示例。假设它们共享相同的纹理,并且在此代码执行之前,纹理已经绑定在 OpenGL ES 1.1 中。

非常感谢此方法的替代代码!

0 投票
4 回答
73042 浏览

opengl - 什么是顶点数组对象?

我今天刚开始从本教程中学习 OpenGL:http: //openglbook.com/the-book/
我到了第 2 章,在那里我画了一个三角形,除了 VAO(这个首字母缩写词可以吗?),我理解了所有内容。本教程有以下代码:

虽然我知道代码是必要的,但我不知道它的作用。尽管我从未使用过 VaoId(除了销毁它),但没有它,代码将无法运行。我假设这是因为它需要绑定,但我不知道为什么。这个确切的代码是否只需要成为每个 OpenGL 程序的一部分?本教程将 VAO 解释为:

顶点数组对象(或 VAO)是描述顶点属性如何存储在顶点缓冲区对象(或 VBO)中的对象。这意味着VAO不是存储顶点数据的实际对象,而是顶点数据的描述符。顶点属性可以由 glVertexAttribPointer 函数及其两个姊妹函数 glVertexAttribIPointer 和 glVertexAttribLPointer 来描述,我们将在下面探讨第一个函数。

我不明白 VAO 如何描述顶点属性。我没有以任何方式描述它们。它是否从 glVertexAttribPointer 获取信息?我想这一定是它。VAO 仅仅是来自 glVertexAttribPointer 的信息的目的地吗?

附带说明一下,我遵循的教程是否可以接受?有什么我应该注意的或更好的教程吗?

0 投票
2 回答
532 浏览

opengl - OpenGL如何知道每个顶点缓冲对象是什么类型?

我刚刚阅读了有关顶点数组对象和顶点缓冲区对象的教程,但我无法从以下代码中弄清楚 OpenGL 如何知道第一个 VBO ( vertexBufferObjID[0]) 表示顶点坐标,而第二个 VBO ( vertexBufferObjID[1]) 表示颜色数据?

编辑:感谢彼得的回答,我发现以下两行代码将每个 VBO 与着色器连接起来(索引 0 和 1 与 VBO 索引相关):

0 投票
1 回答
839 浏览

opengl - OpenGL 将纹理映射到存储在顶点数组中的网格

我有代码使用索引和顶点来绘制一组网格形状的三角形。所有顶点都是使用glDrawElements()绘制的。现在对于每个顶点,对于在网格中形成正方形的每组三角形,我将其对应的纹理坐标设置为 0 或 1。基本上我想在每个“正方形”(由两个三角形组成)中绘制一张随机纹理的拼贴画。我可以使用固定功能管道在 for 循环中使用glBegin()andglEnd()方法调用来做到这一点,但我想知道如何使用Vertex Arrays来做到这一点。下面可以看到我正在尝试做的代码视图。

0 投票
1 回答
581 浏览

ios - 在 iOS 5.1 上的 OpenGL ES 应用程序中,他们真的使用他们声明的顶点数组吗?

在您获得的股票 OpenGL ES 应用程序中(当您在 XCode 中创建新的“OpenGL 游戏”时),在setupGL函数中,有:

但是,似乎没有使用顶点数组(据我所知,顶点数组保留在客户端内存中,而顶点缓冲区则停在 OpenGL 服务器内存中)。

如果您注释掉这些glBindVertexArrayOES命令,代码似乎完全一样。

glBindVertexArrayOES此 xCode 示例中的调用是否无关紧要?

0 投票
1 回答
819 浏览

opengl - 理解 opengl 实例化数组

给定

FaceGroup我通过循环遍历cubeIndicesfrom中的每个索引start_index来渲染集合中的每一个,start_index + length如下所示:

...这给了我正确的结果。现在我想使用实例化数组渲染同样的东西。我的推理告诉我,下面的代码等价于上面的循环:

但似乎只渲染了每组人脸中的第一个(*试探,我可能错了)。我究竟做错了什么?

0 投票
2 回答
2334 浏览

android-ndk - android-ndk,找不到 glGenVertexArraysOES

我想在我的 Android 原生 c 应用程序中使用 VAO。

问题是,这GL_OES_vertex_array_object是支持的,我什至可以得到地址,glBindVertexArrayOESglDeleteVertexArraysOES找不到glGenVertexArraysOES

的存在是否GL_OES_vertex_array_object意味着所有这些功能都可以访问?

我的 VAO 初始化代码:

我当然收到日志消息

我的Android.mk(缩短一点):

设备型号 Samsung i9003 与 Android 2.3.5