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

java - 使用顶点数组绘制 3D 多边形

我有一个绘制 3D 的简短程序GL.GL_QUADS ,这里是它的display()方法 -

现在我想将上面的绘图更改为“顶点数组”模式并获得相同的结果,所以我做了以下操作:

  1. 创建了一个float包含所有顶点坐标的数组GL.GL_QUADS
  2. put这个数组到一个Buffer.
  3. 告诉 OpenGL 顶点在哪里(8 个顶点)。
  4. 告诉 OpenGL 要绘制哪些索引。

这是我编写的主要代码(已编辑)-

当我运行它时,我得到一个异常Exception in thread "AWT-EventQueue-0" javax.media.opengl.GLException: glGetError() returned the following error codes after a call to glDrawElements(): GL_INVALID_ENUM at DisplayWithArray.display(DisplayWithArray.java:152)

指向线 -gl.glDrawElements(GL.GL_QUADS, indices.length, GL.GL_INT, indicesBuf);

这里有什么问题?

编辑:

我将indices数组更改为范围 [0,5] - 根据GL.GL_QUADS. 并将tmpColorVerticesBuf数组扩展到 72 个索引(每种颜色的 4 倍)。

我仍然有与上面提到的相同的例外。

编辑2:(现在效果很好)通过比较 大小(每个数组72)和使用中cubeVertices(大小为3的24个元素)来解决colorVerticesdisplay()gl.glDrawArrays(GL.GL_QUADS, 0, 24)

0 投票
1 回答
481 浏览

opengl - 无法使用 glDrawElements() 和 glMultiDrawElements() 获得输出

我正在构建一个图形应用程序,用户可以通过单击画布指定顶点,然后顶点用于绘制多边形。

该应用程序支持线、三角形和多边形模式。通过计算点击次数来绘制一条线和三角形。然后创建顶点数组并将数据绑定到缓冲区并使用glDrawArrays(). 棘手的是多边形模式。用户可以指定任意数量的顶点并单击鼠标右键触发绘图。我最初计划使用glMultiDrawElements,但不知何故我没有得到任何输出。所以我尝试glDrawElements()循环调用。仍然没有运气。我进行了很多搜索并阅读了很多关于使用glDrawElements()/glMultiDrawElements()VBO 和 VAO 以及使用glVertexPointer()and的文档glColorPointer。仍然没有运气。

我使用以下方法来跟踪顶点属性:

GLfloat ** 多边形顶点;//每个多边形顶点列表都进入这个..
GLuint * polygonIndicesCounts; //保存每个多边形的顶点数的指针
GLuint ** polygonIndices; //保存与多边形对应的顶点索引的指针数组
GLfloat * polygonColors; //每次鼠标点击,颜色都是随机生成的。

和渲染代码:

0 投票
1 回答
2088 浏览

graphics - OpenGL ES 2.0:静态和动态顶点数据的高效渲染

我正在编写一个 iOS/Android 游戏,并寻找使用 OpenGL ES 2.0 呈现我的顶点数据的最高效方式。我有两种不同的数据:每帧都会改变其属性的动态数据,例如玩家或动画背景对象,以及静态数据,例如静态背景或地形。从昨天开始,我在谷歌上搜索了很多,但对于渲染此类数据最好的问题,我找不到一个明确而独特的答案。

渲染此类数据基本上有三个选项(如果我没有错过任何一个。如果是这样,请随时纠正我。):

仅限顶点数组: 只需在 CPU 上的每一帧填充顶点(包括动态数据)。

仅限顶点缓冲区对象: 使用 GL_DYNAMIC_DRAW 在 GPU 上分配 VBO,其中存储了动态和静态数据。然后通过 glBufferSubData 每帧更新动态数据。

两者都使用: 静态数据使用 VBO 存储和渲染,动态数据使用顶点数组渲染。使用此选项,我们需要两个渲染通道,一个用于渲染 VBO,一个用于渲染顶点数组。

由于第一个选项没有利用静态数据的不变性,并且第三个选项需要两次渲染通道,我的猜测是我应该使用第二个选项。但是,我对此完全不确定,希望您能澄清我的困惑。

0 投票
2 回答
293 浏览

opengl - 使用 openGL 渲染场景

我必须使用 openGL 渲染一个包含各种网格的场景。网格定义如下:

网格可以由三角形和四边形组成,我尝试使用以下代码渲染顶点:

这就是我画的(不关心颜色,因为我还没有计算它们) 这就是我画的(不要关心颜色,因为我还没有计算它们)

如果我的代码正确,这就是我应该看到的 如果我的代码正确,这就是我应该看到的

有人知道错误在哪里吗?

0 投票
1 回答
753 浏览

c++ - opengl VBO 渲染无法正常工作

在我的代码的开头,我已经初始化了 vbo:

然后我的顶点和颜色数组:

现在我创建并绑定 vbo 并分配空间:

最后是渲染函数:

这应该画一个三角形,但我看不到任何东西。也许 glVertexPointer 和 glColorPointer 的参数不正确。我已阅读 opengl.or 上有关 VBO 的文档,并且遵循了几个教程,如下所示:https ://www.youtube.com/watch?v=KIeExgOcmv0

我的代码和 youtube 链接上的代码相似,但第一个不起作用。我不明白为什么。你能帮助我吗?

这是整个代码:

0 投票
1 回答
815 浏览

python - SFML (OpenGL) 中的位图字体

我正在用 pySFML 编写一个简单的位图字体渲染器,并想问是否有更好更快的方法来解决这个问题。

我正在使用VertexArray并为字符串中的每个字符创建一个四边形。每个四边形都应用了适当的纹理坐标。

示例字体(PNG 文件):位图字体示例

字体渲染代码:

使用 FPS 计数器的简单基准测试:

我正在使用 Python 3.3、pySFML 1.3、SFML 2.0 和 Windows。

0 投票
1 回答
123 浏览

c++ - 在 OpenGL 2.1 中,使用 3D tex 坐标是否安全,即使在 2d 空间(具有 2D 纹理)中也是如此?

我可以通过在 OpenGL 2.1 中将 Z 值设置为 0 来将 3D tex coord 函数用于 2D 纹理吗?有没有我不能用于 2D 的3D 功能?我不能使用 2D 函数,因为这是用于 2D/3D 包装器的,当这两个函数可以一起使用时,尝试猜测用户是输入 2D 还是 3D 坐标太低效了。

0 投票
2 回答
725 浏览

qt - OpenGL + Qt 4.8 没有绘制任何东西

我一直在尝试在 Qt 中使用带有着色器和简单顶点数组的 OpenGL。我基本上希望在屏幕中间绘制一个平原,但是当我运行程序时什么都没有出现。我的代码基于 Qt 的“纹理”示例,对我来说一切看起来都一样,但它不起作用!

这是我的 glwidget.cpp 的代码:

这是我的 vShader:

还有我的 fShader:

你看到那里的错误了吗?

0 投票
1 回答
317 浏览

ios - 在 GLKViewController 之外使用时,xcode 中的 gldrawelements 访问不正确

我对 OpenGL ES 很陌生,但我要做的就是glDrawElementsCharacter类中使用绘制索引顶点。我在GLKViewController课堂上之前已经让这个工作了,但是当我尝试创建一个Character可以执行自己的渲染的类时,除了 BAD_ACCESS 什么都没有。这是我的Character课:

然后在ViewController

使用:

我知道这并不像错误计算字节大小或其他东西那么简单,因为我已经在这个问题上待了几天了。

0 投票
0 回答
89 浏览

c++ - OpenGL Terrain 3D calcul normal peaks -> 模糊

为了获得更平滑的地形表面外观,解决方案是将单个非法线关联到三角形,而是将法线关联到三角形的三个顶点中的每一个。

所以,当我尝试实现它时,我发现了一些问题,比如模糊

http://i.stack.imgur.com/6oPcW.png

这是一个明确的计划,我正在尝试做的事情:http: //i.stack.imgur.com/7T04y.png

我正在使用这段代码:


我正在使用顶点数组来绘制这些点。

和 ..

那么,有人知道问题出在哪里吗?