问题标签 [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.
c++ - 我可以在调用 glDrawArrays 后删除 OpenGL 顶点数组吗?
我在每次渲染时动态生成顶点数组,然后我想删除这些数组。是否glDrawArrays
立即将顶点数组复制到服务器?因此,调用后删除顶点数组是否安全glDrawArrays
?
否则,我如何确定何时可以安全地删除顶点数组?
c - OpenGL 顶点数组
我有一个名为Point
(恰好是 Python 扩展)的结构,如下所示:
我还有另一个结构,它将在两个数组中保存一堆这些:
我想用这些来映射多边形的顶点和纹理坐标与顶点数组。问题是顶点数组需要以下格式的数组:
有没有办法可以用and调用glVertexPointer
and ,或者我必须构造与 gl*Pointer 期望的匹配的新数组?glTexCoordPointer
Polygon->vertex_points
Polygon->texcrd_points
android - NDK OpenGL 未定义对 glVertexPointer 的引用
在终端中使用 ndk-build 编译以下 C 代码时(我正在运行 Ubuntu):
使用此 Android.mk 文件:
我收到一个错误,未定义对 glVertexPointer 的引用。我想知道为什么,因为我相信我正确地包含了标题并链接了 Android.mk 中的库
谢谢!
opengl - OpenGL绘制圆圈,奇怪的错误
我不是数学家,但我需要画一个实心圆圈。
我的方法是用别人的数学得到一个圆的圆周上的所有点,然后把它们变成一个三角扇。
我需要顶点数组中的顶点,没有立即模式。
圆圈确实出现了。但是,当我尝试覆盖圆圈时,会发生奇怪的事情。它们只出现一秒钟,然后消失。当我将鼠标移出窗口时,一个三角形不知从何而来。
这是课程:
iphone - 从文件加载顶点数组的正确格式
在过去的几周里,我一直在敲击键盘。我要做的是将文本文件中的浮点数组(GLfloat)和无符号短裤数组(GLushort)加载到objective-c中的等效数组中,以便我可以渲染包含的对象。我已将数组加载到向量对象中
和
但由于某种原因,我无法弄清楚为什么我不能让这些渲染。这是我用于呈现上述内容的代码:
示例数组如下:
我要从中加载这些数组以进行渲染的文本文件如下所示:
矢量对象是最好的方法吗?如果不是,那是什么?我做错了什么,这些不会呈现?谢谢。
iphone - 将顶点数组和面索引加载到OpenGL-ES中的最快方法?
我正在尝试加载已格式化为的 .obj 文件:
和:
格式化成向量和向量数组,然后我直接在 Opengl-ES 中渲染。我的问题是,当我尝试将模型加载到数组中时,加载它们大约需要 40 秒。我不知道为什么它会这么慢,我已经看到其他代码只加载了几个相同的模型秒。有什么建议么?我加载文件的代码如下:
我的一个想法是将数组序列化为二进制文件,然后将它们直接反序列化到我的程序中。虽然还没有弄清楚如何做到这一点,但也许这些方面的东西可能是一个解决方案。
opengl - OpenGL/JOGL:顶点数组中的多个三角形风扇
我正在使用顶点数组制作一些适度简单的形状,并且取得了一些不错的进展,但现在我想绘制 2 个(或更多)三角形扇形对象。有什么方法可以只打一个电话gl.glDrawArrays(GL.GL_TRIANGLE_FAN,...
还是我需要为每个粉丝打一个单独的电话?
Wikipedia 的Triangle strip文章描述了一种叫做原始重启的东西,但是 OpenGL 的顶点规范让我认为这不适用于顶点数组。
绘制多个三角扇的正确方法是什么?这是我当前的绘制方法:
编辑
我更新了 draw 的相关部分,如下所示:
其中 fanDist 是这个扇形起点的偏移量(从扇形起点开始),而 fanLength 是这个扇形的长度。
这似乎确实有效,这很好,但是,这是正确的方法吗?有没有更好的办法?
c++ - OpenGL:如何使用深度排序的顶点数组设计高效的渲染系统?
人们经常告诉我至少使用顶点数组。但我认为这不是一个好主意,因为我使用glPushMatrix()
withglTranslatef/glRotatef
在 3d 世界中定位对象。
那么,我是否应该停止使用glPushMatrix()
并“手动”计算世界中旋转/移动的顶点位置,然后将它们的顶点数据推送到顶点数组中,然后一次全部渲染?
但是,当我为屏幕上的所有对象使用不同的纹理表面时,所有这些都会变得更加混乱,这些对象也是深度排序的。
所以:
- 我还必须使用纹理表面 ID 存储每个对象。
- 我会按 Z 位置对所有可见对象进行排序(游戏只能自上而下查看,所有对象都是平面的)。
- 我会通过这个排序数组:
- 创建新缓冲区并仅将顶点/纹理坐标/颜色/法线复制到此缓冲区中:
- 每次纹理表面 ID 从以前的 ID 发生变化时,我都会绑定到正确的纹理 ID:
- 上传我收集的顶点数据。
- 释放用于临时顶点数组的缓冲区。
- 重复步骤 4-7,直到我完成了我首先排序的所有数据。
- 释放我的排序数组数据,然后重复步骤 1-9。
我做对了吗?
另外,我应该如何为要排序的对象设计数据结构?例如,std::vector
用于存储每个对象的顶点数据是否很好?还是有更好的选择?我在想std::vector
存储所有这些数据的方式如下:
另外,在第 4 步:在这种情况下是否可以使用已经存在std::vector
的?我有一个想法,我必须使用原始数组,例如new float[100]
将顶点数组发送到我的 GPU,或者我可以以std::vector
某种方式(有效地)使用我已经存在的排序在这里,而不在每次纹理 ID 更改时创建新缓冲区?
java - JOGL glArrayElement 点提供 0,0,0
我有一个 JOGL opengl 问题,我正在尝试使用顶点数组,但是每当我使用 glArrayElement 时(注意:glDrawElements 也不起作用。),它给出了点 0,0,0。重要代码。我假设一个窗口被初始化并指定了一个重塑函数。
我还需要调用其他初始化函数/绘图函数,还是另一个问题?任何帮助表示赞赏。
iphone - glDrawElements 在 iPhone 上不工作,但 glDrawArrays 工作
我试图将我的 OpenGL 应用程序转换为 OpenGL ES。我以这种方式在 Mac 上绘制元素:
一切都很好,但是当我尝试在 iPhone 4(iOS 4.2 和 XCode 3.2.5)上以这种方式绘制时,我什么也看不到。奇怪的是所有计算都完成了,当我尝试用 glDrawArrays 绘制它时,屏幕上会显示一些东西(但顶点没有按正确的顺序呈现):
我错过了什么吗?