问题标签 [gldrawarrays]
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 访问冲突
我正在尝试遵循 [this][1] 简单教程,但在到达“glDrawArrays”时出现以下错误:
openGLTest.exe 中 0x03D7598E (nvoglv32.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000。
我不知道是什么原因造成的,因为教程是一样的!
c++ - c ++ opengl仅绘制1点而不是网格
我正在为我的 DLL 解决一些绘图包装器,它正在计算一些数组。在这段代码中我需要它来绘制,但我不明白,为什么当我只绑定一次时,它只绘制了 1 个点。但是当我绑定它时(据我所知,我不应该因为记忆而这样做)每个绘画事件,它都会像我期望的那样绘制我的网格。
这是 bindData 的初始状态。
然后在我的绘图功能中:
如果没有
它运作良好。但正如我所说,我确信它不是这样的。
我很感激你能给我的每一个建议。
非常感谢。
EDIT1:我的问题是,当我只绑定一次 vbo 时,为什么它只绘制 1 个点而不是 NxN 点网格。我错过了什么?
opengl - 从 glDrawElements 切换到 glDrawArrays
我正在使用 LWJGL 和 icosahedron-subdivide-algorithm 来创建 icosphere 网格。
我正在使用 glDrawElements 来渲染球体,它们看起来像这样 ,但我希望得到更低多边形的外观。
经过一番研究,我发现 glDrawArrays 可以实现低多边形外观,所以我切换到 glDrawArrays。在不改变球体本身的任何内容(顶点数组、索引数组等)的情况下,它们现在看起来像这样。
甚至主二十面体也完全关闭。我玩弄了二十面体的基本顶点和数组(细分算法用于创建球体)来查看哪里出了问题,但我无法解决问题所在。
值得一提的是,我在 glDrawElements 和 glDrawArrays 中都使用了 GL_TRIANGLES。
任何见解都会很棒。
c++ - OpenGL:glDrawArrays() 抛出异常 (nvoglv32.dll) 访问冲突读取位置 0x00000000
所以我制作了一个基本的 OpenGL 应用程序,一切都很好,直到我实现了一个几何着色器。
我得到的错误是 在 Demo.exe 中的 0x6A67F00A (nvoglv32.dll) 处引发的异常:0xC0000005:访问冲突读取位置 0x00000000。
现在,我不知道着色器是否是导致问题的原因,但在我实现它之前它运行良好。
我做了一些谷歌搜索,似乎有很多不同的原因,其中许多与 VAO 有关,这些原因保持不变。
错误发生在glDrawArrays(GL_TRIANGLES, 0, 6);
这是我的 C++ 代码:
这是我的着色器:
顶点着色器(通过)
几何着色器(冗余,但需要分配)
片段着色器
它的代码量相当大。我会问我的老师,但他周末不在。
如果您需要任何其他信息,请告诉我。
提前致谢!
android - Draworder OpenGL - 较大的对象大于较小的对象
在我的 OpenGL ES Android 游戏中,我尝试根据它们的 z 值(即 z 平面中的位置)按顺序绘制形状。这意味着首先绘制最小最远的形状(纹理),然后再绘制更大的。我已将形状属性存储在数组列表中,并且在绘制和更新时我使用的是迭代器。假设这是带有z值的arrayList(只是一个例子)
ArrayList 数组列表砖
我对每一帧使用 Collections.sort(..) 对这个 arrayList 进行排序,排序后的列表看起来像这样
也就是说 - 最小的形状在列表中排在第一位,并且最先被绘制。我可以看到数组列表确实已排序,但不知何故什么也没发生。我想要的是较小的形状应该在较大的形状后面。GPU是否有某种绘图顺序的算法?我刚从skia迁移到opengl,对此感到惊讶。
我在这里想念什么?我该如何解决这个问题?
渲染方法
更新(片段)
c++ - 使用 glDrawArray 函数绘制三角形
我想用 glDrawArrays() 函数在 opengl 中绘制一个三角形。以下是我的代码: .cpp 文件:
.头文件:
使用此代码,我只是得到一个空白窗口。没有绘制任何点。我做错了什么?我的 glDrawArray 函数有什么问题吗?
android - OpenGL ES - 实例化 - 不同的 uv-coord 一个 drawcall
我在 OpenGL ES3 中有以下关于实例化的问题
我在一次绘制调用中绘制了 64 个形状 - 三角形。好的!
然后我想给形状单独的眼睛,它们在“眨眼”。闪烁表示图集中的不同偏移量(即不同的 uv 坐标)。我可以轻松地为具有相同眼睛状态的所有形状进行一次绘制调用,但如果我希望这些形状处于不同的闪烁模式 - 我如何通过实例化来完成它。方法签名不允许
顶点偏移是缓冲区中的位置,假设第一只眼睛的位置为 59。下一个为 60,依此类推。共有 7 种眼状态和 uv 坐标
所以我有 64 种形状,因为我希望它们有自己的闪烁状态,这意味着不同的偏移量.. 我不知道如何只用一个绘图调用来完成它。
BlinkingEyes 类中的绘制方法
顶点着色器的片段
片段着色器的片段
这个问题有解决方案吗?我可以将信息发送到着色器并告诉它为不同的形状使用不同的 uv 坐标吗?
眼睛(来自地图集的片段)
arrays - glDrawArrays 无法绘制动态数组
我正在尝试渲染一个可以扩展到其他对象的四面体。使用静态数组可以很好地绘制四面体。
但是当我将 OFF 文件读入动态数组时,什么也没有出现。编译时没有出现错误。
以下用于从 OFF 文件中获取数据的函数中。mod->faces 从 OFF 文件中获取面数。在这种情况下,它是 4。我检查了从 OFF 文件中读取的顶点,这是准确的。甚至将其与静态数组进行比较。
在初始化()中:
最后在我的 main() 中:
最终我想将数组存储到一个列表中,这样我就可以从不同的 OFF 文件中循环抛出不同的对象。但现在我只想让它画一些东西。任何帮助将不胜感激。谢谢你。
android - OpenGL ES 致命信号 11 (SIGSEGV),代码 1,tid 8367 (GLThread 3562) 中的故障地址 0x8
尝试渲染使用库加载的 .obj 时,我调用 glDrawArrays 时发生崩溃。我不知道发生了什么,因为这是我第一次使用 openGL ES。我的猜测是三角形的数量是错误的,在尝试使用 10 作为参数的 glDrawArrays 之后,我意识到这可能不是问题。
我的渲染器的代码: