草庐IT

glDrawArrays

全部标签

opengl - 为什么 glDrawArrays 因 GL_INVALID_OPERATION 而失败?

我正在使用OpenGL绘制一个矩形,我正在使用golang进行绘制。我暂时不使用红、绿、蓝参数。varvertices=[]float64{-1.0,-1.0,0.0,//V1-bottomleft-1.0,1.0,0.0,//V2-topleft1.0,-1.0,0.0,//V3-bottomright1.0,1.0,0.0,//V4-topright}funcDisplayWrite(red[]byte,green[]byte,blue[]byte){constGL_TRUE=1constGL_FALSE=0constGL_FLOAT=0x1406constGL_VERTEX_AR

c++ - OpenGL——多个 glDrawArrays() 调用只显示第一次的结果?

所以我遍历了几个网格,每个网格都存储在自己的GL_ARRAY_BUFFER中,但它们共享相同的glVertexAttribPointer结构。我在for循环中遍历每个渲染/绘制过程:if(sConfig.mRendering.isRenderTypeActive(RENDER_TYPE_SINGLE_MESH)||sConfig.mRendering.isRenderTypeActive(RENDER_TYPE_TWO_MESH)){constintmesh_count=sConfig.mRendering.isRenderTypeActive(RENDER_TYPE_TWO_MESH

ios - 游戏在 iOS 4.3 上运行良好,但在 glDrawArrays 上的 iOS 5 上崩溃

我在一年前开发了一款iPhone游戏,并决定从头开始。所以我下载了在MacOSX10.7.4上运行的最新版本的Xcode(4.4.1),并使用iOS5.1SDK(为iOS4.0构建)构建了我的游戏,并在iOS5.1上的模拟器中运行它。..它在第一次调用glDrawArrays()时崩溃。所以我觉得这很奇怪,因为当我上次处理它时它肯定运行得非常好。然后我尝试在iOS4.3上运行,它工作正常!结果它从iOS崩溃了。5.0及以上。我还尝试构建更高的目标操作系统版本,但这没有任何区别。应用程序在glDrawArrays执行的gleRunVertexSubmitImmediate调用(带有EXC

iphone - 使用 openGL 和 cocos2D 绘制大量线条的最佳方法是什么?

我有一系列二维顶点,代表用于绘制网格的线。大约有900条线段要绘制(网格使用Spring物理来扭曲,这就是为什么我不只为每一行和每列绘制一条线)。cocos2D有一个内置的ccDrawLine函数,可以很好地绘制,但我认为这可能效率低下,因为它为每个线段调用glDrawArrays。如何高效地绘制大量线段?作为奖励,请推荐使用openGL进行良好2D绘图实践的来源。 最佳答案 在OpenGL中高效绘图意味着发送最少的信息和尽可能少的信息批处理。与所有事情一样,这取决于具体情况,您应该尝试各种方法并针对您的情况进行基准测试。但作为经验

android - Android 上使用 OpenGL ES 1.0 的简单粒子系统

我正在尝试使用OpenGL在Android中整合一个粒子系统。我想要几千个粒子,其中大部分可能在任何给定时间都在屏幕外。它们在视觉上是相当简单的粒子,我的世界是二维的,但它们会移动、改变颜色(不是大小-它们是2x2),然后我需要能够添加和删除。我目前有一个数组,我迭代它,处理速度变化,管理生命周期(杀死旧的,添加新的),并使用glDrawArrays绘制它们。但是,对于此调用,OpenGl指向的是单个顶点;我将它glTranslatex到我想要绘制的每个粒子的相关坐标,一次一个,用glColor4x设置颜色,然后用glDrawArrays设置它。它有效,但它有点慢并且只适用于几百个粒子

android - 如何在 OpenGL ES Android 中绘制网格线?

我想绘制定义地平面的10x10网格,以便中心是世界坐标的原点。这是为网格中定义的每一行调用的代码。gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);gl.glVertexPointer(3,GL10.GL_FLOAT,0,mVerticesBuffer);gl.glTranslatef(x,y,z);gl.glRotatef(rz,0,0,1);gl.glRotatef(rx,1,0,0);gl.glRotatef(ry,0,1,0);g

iphone - glDrawElements vs glDrawArray 效率

我正在为iOS和Android制作游戏。我在很多地方看到使用索引绘制比仅绘制三角形数组更有效。问题是我使用的是有损压缩顶点(就像md2的文件格式),它比单独使用索引要少-数组:N*3(xyz)*1(uchar)+translate(12bytes)+scale(12bytes)。元素:N*3(xyz)*4(uint)+数组/~10数组似乎比索引和压缩元素更好,尽管苹果的OpenGL分析器工具说我应该使用glDrawElements..OpenGL实现是否更喜欢索引数组?还是因为索引数组包含的数据少于常规未压缩数组?附注我使用的是OpenGLes2.0,顶点着色器负责解压缩顶点。

ios - glDrawArrays 从 iOS 到 OSX

我正在尝试让我为iOS制作的游戏在OSX中运行。到目前为止,除了使用glbound纹理绘制一些随机生成的山丘之外,我已经能够使所有东西正常工作。它在iOS中完美运行,但不知何故,当应用程序在OSX中运行时,这部分是唯一不可见的部分。我检查了所有坐标和颜色值,所以我很确定它与OpenGL有某种关系。glDisable(GL_TEXTURE_2D);glDisableClientState(GL_TEXTURE_COORD_ARRAY);glDisableClientState(GL_COLOR_ARRAY);glBindTexture(GL_TEXTURE_2D,_textureSpri

opengl - 为什么 OpenGL 的 glDrawArrays() 在核心配置文件 3.2 下会因 GL_INVALID_OPERATION 而失败,但在 3.3 或 4.2 下却不会?

我有调用glDrawArrays的OpenGL渲染代码,当OpenGL上下文(自动/隐式获得)4.2时,它可以完美地工作,但在明确请求的OpenGL核心上下文3.2时始终失败(GL_INVALID_OPERATION)。(在这两种情况下,着色器始终设置为#version150,但我怀疑这不是重点。)根据规范,当glDrawArrays()因GL_INVALID_OPERATION失败时,只有两个实例:“如果非零缓冲区对象名称绑定(bind)到已启用的数组,并且缓冲区对象的数据存储当前已映射”——此时我没有进行任何缓冲区映射“如果几何着色器处于事件状态且模式与[...]不兼容”——不,目

opengl - 为什么 OpenGL 的 glDrawArrays() 在核心配置文件 3.2 下会因 GL_INVALID_OPERATION 而失败,但在 3.3 或 4.2 下却不会?

我有调用glDrawArrays的OpenGL渲染代码,当OpenGL上下文(自动/隐式获得)4.2时,它可以完美地工作,但在明确请求的OpenGL核心上下文3.2时始终失败(GL_INVALID_OPERATION)。(在这两种情况下,着色器始终设置为#version150,但我怀疑这不是重点。)根据规范,当glDrawArrays()因GL_INVALID_OPERATION失败时,只有两个实例:“如果非零缓冲区对象名称绑定(bind)到已启用的数组,并且缓冲区对象的数据存储当前已映射”——此时我没有进行任何缓冲区映射“如果几何着色器处于事件状态且模式与[...]不兼容”——不,目