jjzjj

glDrawElement

全部标签

ios - glDrawElements 与 GL_LINES 强制 gleRunVertexSubmitARM? (或 : why drawing wireframes is slow on iOS? )

在为我正在处理的iPhone/iPad小项目做一些测试时,我观察到使用带有GL_LINES的glDrawElements绘制线框时CPU性能有很大的损失。这是场景:一个有640个顶点的模型(4个float用于位置,3个float用于法线,没有对齐问题……全部在4字节边界上)3840个索引(无符号短)顶点和索引都使用VBO(无VAO)上面使用glDrawElements和GL_TRIANGLES绘制的模型效果很好然后:具有640个顶点的相同模型2560个索引IBO且无VAO使用带有GL_LINES的glDrawElements绘制会触发对gleRunVertexSubmitARM的连续调

ios - glDrawElements 在 iOS 上大量使用 CPU

硬件:iPad2软件:OpenGLES2.0C++glDrawElements似乎占用了大约25%的cpu。使每帧CPU18ms和GPU10ms。当我不使用索引缓冲区并使用glDrawArrays时,它会加速并且glDrawArrays大麦出现在分析器上。其他一切都一样,glDrawArrays有更多顶点,因为我必须在没有索引缓冲区的情况下在VBO中复制顶点。到目前为止:两种方法之间几乎相同数量的状态变化顶点结构是两个float(8字节)。indexbuffer是16bit的(也试过32bit的)两个缓冲区的GL_SATIC_DRAW缓冲区在加载后不会改变相同的VBO和索引缓冲区每帧渲

ios - glDrawElements 中的参数类型 UnsafePointer<Void>

我正在尝试获取我的context(EAGLContext)在Swift中呈现;但是几天来我一直无法使用glDrawElements功能去工作。我在Stackoverflow上阅读了几个类似的问题,但无济于事。我的glDrawElements如下:glDrawElements(GLenum(GL_TRIANGLES),GLsizei(Indices.count),GLenum(GL_UNSIGNED_BYTE),&offset)我对最后一个参数有问题-offset,它需要一个UnsafePointer.我尝试了以下方法:letoffset:CConstVoidPointer=COpaqu

python - 如何在 PyOpenGL 中使用顶点数组对象和 glDrawElements 进行绘制

我有以下代码,它应该简单地在屏幕上绘制一个绿色三角形。它使用顶点数组对象和索引缓冲区进行绘制,并具有我能制作的最简单的着色器。起初我没有使用索引缓冲区,只是简单地使用glDrawArrays进行绘图调用,效果很好,但是当我将其更改为使用glDrawElements时,没有任何内容被绘制到屏幕(全黑)。fromOpenGL.GLimportshadersfromOpenGL.arraysimportvbofromOpenGL.GLimport*fromOpenGL.raw.GL.ARB.vertex_array_objectimportglGenVertexArrays,\glBindV

ios - 在 Open ES iPhone 应用程序中围绕 VBO 使用 VAO 在调用 glDrawElements 时导致 EXC_BAD_ACCESS

我正在努力将我的代码提升到一个新的水平。遵循Apple的一些最佳实践,我正在尝试围绕我的顶点缓冲区对象(VBO)实现顶点数组对象。我这样设置我的VBO和VAO:-(void)setupVBOs{glBindBuffer(GL_ARRAY_BUFFER,0);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);glBindVertexArrayOES(0);{glGenVertexArraysOES(1,&directArrayObject);glBindVertexArrayOES(directArrayObject);//GLuinttexCoordBuf

Android OpenGL ES glDrawArrays 或 glDrawElements?

最好的方法是什么:如果我使用glDrawArrays,或者如果我使用glDrawElements?有什么区别吗? 最佳答案 对于这两种情况,您都需要向OpenGL传递一些包含顶点数据的缓冲区。glDrawArrays基本上是“使用我之前给你的数据绘制这个连续的顶点范围”。好:您无需构建索引缓冲区不好:如果您将数据组织到GL_TRIANGLES中,则相邻三角形的顶点数据将重复。这显然是浪费。如果您使用GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN来尝试避免重复数据:它不是非常有效,您必须为每个strip和扇形进行渲

c++ - glDrawElements 没有显示

当我使用glDrawArrays时,我的屏幕中间出现了一个三角形,正如预期的那样。但是当我尝试使用glDrawElements时,什么都没有出现。我已经尝试了各种方法,例如重新排序gl调用、移动属性指针,甚至硬编码verts和index似乎都没有做任何事情,如我的代码所示。此代码运行一次://InitialiseGLFWif(!glfwInit()){fprintf(stderr,"FailedtoinitializeGLFW\n");//return-1;}glfwOpenWindowHint(GLFW_FSAA_SAMPLES,4);//4xantialiasingglfwOpen

关于 ios:Swift: glDrawElements 因 EXC_BAD_ACCESS 代码=1 而崩溃

Swift:glDrawElementscrashingwithEXC_BAD_ACCESScode=1我正在通过本指南在iOS上学习OpenGL,我想在swift上实现所有内容。所以,有一些代码让我崩溃了:内存结构:12345678910111213141516privatestructVertex{  varPosition:(GLfloat,GLfloat,GLfloat)  varColor:(GLfloat,GLfloat,GLfloat,GLfloat)}privatestaticvarVertices=[  Vertex(Position:(1,-1,0),Color:(1,0,

关于 ios:Swift: glDrawElements 因 EXC_BAD_ACCESS 代码=1 而崩溃

Swift:glDrawElementscrashingwithEXC_BAD_ACCESScode=1我正在通过本指南在iOS上学习OpenGL,我想在swift上实现所有内容。所以,有一些代码让我崩溃了:内存结构:12345678910111213141516privatestructVertex{  varPosition:(GLfloat,GLfloat,GLfloat)  varColor:(GLfloat,GLfloat,GLfloat,GLfloat)}privatestaticvarVertices=[  Vertex(Position:(1,-1,0),Color:(1,0,