问题标签 [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.
java - 使用顶点数组绘制 3D 多边形
我有一个绘制 3D 的简短程序GL.GL_QUADS
,这里是它的display()
方法 -
现在我想将上面的绘图更改为“顶点数组”模式并获得相同的结果,所以我做了以下操作:
- 创建了一个
float
包含所有顶点坐标的数组GL.GL_QUADS
。 put
这个数组到一个Buffer
.- 告诉 OpenGL 顶点在哪里(8 个顶点)。
- 告诉 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个元素)来解决colorVertices
display()
gl.glDrawArrays(GL.GL_QUADS, 0, 24)
opengl - 无法使用 glDrawElements() 和 glMultiDrawElements() 获得输出
我正在构建一个图形应用程序,用户可以通过单击画布指定顶点,然后顶点用于绘制多边形。
该应用程序支持线、三角形和多边形模式。通过计算点击次数来绘制一条线和三角形。然后创建顶点数组并将数据绑定到缓冲区并使用glDrawArrays()
. 棘手的是多边形模式。用户可以指定任意数量的顶点并单击鼠标右键触发绘图。我最初计划使用glMultiDrawElements
,但不知何故我没有得到任何输出。所以我尝试glDrawElements()
循环调用。仍然没有运气。我进行了很多搜索并阅读了很多关于使用glDrawElements()/glMultiDrawElements()
VBO 和 VAO 以及使用glVertexPointer()
and的文档glColorPointer
。仍然没有运气。
我使用以下方法来跟踪顶点属性:
GLfloat ** 多边形顶点;//每个多边形顶点列表都进入这个..
GLuint * polygonIndicesCounts; //保存每个多边形的顶点数的指针
GLuint ** polygonIndices; //保存与多边形对应的顶点索引的指针数组
GLfloat * polygonColors; //每次鼠标点击,颜色都是随机生成的。
和渲染代码:
graphics - OpenGL ES 2.0:静态和动态顶点数据的高效渲染
我正在编写一个 iOS/Android 游戏,并寻找使用 OpenGL ES 2.0 呈现我的顶点数据的最高效方式。我有两种不同的数据:每帧都会改变其属性的动态数据,例如玩家或动画背景对象,以及静态数据,例如静态背景或地形。从昨天开始,我在谷歌上搜索了很多,但对于渲染此类数据最好的问题,我找不到一个明确而独特的答案。
渲染此类数据基本上有三个选项(如果我没有错过任何一个。如果是这样,请随时纠正我。):
仅限顶点数组: 只需在 CPU 上的每一帧填充顶点(包括动态数据)。
仅限顶点缓冲区对象: 使用 GL_DYNAMIC_DRAW 在 GPU 上分配 VBO,其中存储了动态和静态数据。然后通过 glBufferSubData 每帧更新动态数据。
两者都使用: 静态数据使用 VBO 存储和渲染,动态数据使用顶点数组渲染。使用此选项,我们需要两个渲染通道,一个用于渲染 VBO,一个用于渲染顶点数组。
由于第一个选项没有利用静态数据的不变性,并且第三个选项需要两次渲染通道,我的猜测是我应该使用第二个选项。但是,我对此完全不确定,希望您能澄清我的困惑。
opengl - 使用 openGL 渲染场景
我必须使用 openGL 渲染一个包含各种网格的场景。网格定义如下:
网格可以由三角形和四边形组成,我尝试使用以下代码渲染顶点:
这就是我画的(不关心颜色,因为我还没有计算它们)
如果我的代码正确,这就是我应该看到的
有人知道错误在哪里吗?
c++ - opengl VBO 渲染无法正常工作
在我的代码的开头,我已经初始化了 vbo:
然后我的顶点和颜色数组:
现在我创建并绑定 vbo 并分配空间:
最后是渲染函数:
这应该画一个三角形,但我看不到任何东西。也许 glVertexPointer 和 glColorPointer 的参数不正确。我已阅读 opengl.or 上有关 VBO 的文档,并且遵循了几个教程,如下所示:https ://www.youtube.com/watch?v=KIeExgOcmv0
我的代码和 youtube 链接上的代码相似,但第一个不起作用。我不明白为什么。你能帮助我吗?
这是整个代码:
python - SFML (OpenGL) 中的位图字体
我正在用 pySFML 编写一个简单的位图字体渲染器,并想问是否有更好更快的方法来解决这个问题。
我正在使用VertexArray并为字符串中的每个字符创建一个四边形。每个四边形都应用了适当的纹理坐标。
示例字体(PNG 文件):
字体渲染代码:
使用 FPS 计数器的简单基准测试:
我正在使用 Python 3.3、pySFML 1.3、SFML 2.0 和 Windows。
c++ - 在 OpenGL 2.1 中,使用 3D tex 坐标是否安全,即使在 2d 空间(具有 2D 纹理)中也是如此?
我可以通过在 OpenGL 2.1 中将 Z 值设置为 0 来将 3D tex coord 函数用于 2D 纹理吗?有没有我不能用于 2D 的3D 功能?我不能使用 2D 函数,因为这是用于 2D/3D 包装器的,当这两个函数可以一起使用时,尝试猜测用户是输入 2D 还是 3D 坐标太低效了。
qt - OpenGL + Qt 4.8 没有绘制任何东西
我一直在尝试在 Qt 中使用带有着色器和简单顶点数组的 OpenGL。我基本上希望在屏幕中间绘制一个平原,但是当我运行程序时什么都没有出现。我的代码基于 Qt 的“纹理”示例,对我来说一切看起来都一样,但它不起作用!
这是我的 glwidget.cpp 的代码:
这是我的 vShader:
还有我的 fShader:
你看到那里的错误了吗?
ios - 在 GLKViewController 之外使用时,xcode 中的 gldrawelements 访问不正确
我对 OpenGL ES 很陌生,但我要做的就是glDrawElements
在Character
类中使用绘制索引顶点。我在GLKViewController
课堂上之前已经让这个工作了,但是当我尝试创建一个Character
可以执行自己的渲染的类时,除了 BAD_ACCESS 什么都没有。这是我的Character
课:
然后在ViewController
使用:
我知道这并不像错误计算字节大小或其他东西那么简单,因为我已经在这个问题上待了几天了。
c++ - OpenGL Terrain 3D calcul normal peaks -> 模糊
为了获得更平滑的地形表面外观,解决方案是将单个非法线关联到三角形,而是将法线关联到三角形的三个顶点中的每一个。
所以,当我尝试实现它时,我发现了一些问题,比如模糊
http://i.stack.imgur.com/6oPcW.png
这是一个明确的计划,我正在尝试做的事情:http: //i.stack.imgur.com/7T04y.png
我正在使用这段代码:
我正在使用顶点数组来绘制这些点。
和 ..
那么,有人知道问题出在哪里吗?