问题标签 [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.

0 投票
3 回答
1596 浏览

c++ - glDrawArrays 访问冲突

我正在尝试遵循 [this][1] 简单教程,但在到达“glDrawArrays”时出现以下错误:

openGLTest.exe 中 0x03D7598E (nvoglv32.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000。

我不知道是什么原因造成的,因为教程是一样的!

0 投票
1 回答
172 浏览

c++ - c ++ opengl仅绘制1点而不是网格

我正在为我的 DLL 解决一些绘图包装器,它正在计算一些数组。在这段代码中我需要它来绘制,但我不明白,为什么当我只绑定一次时,它只绘制了 1 个点。但是当我绑定它时(据我所知,我不应该因为记忆而这样做)每个绘画事件,它都会像我期望的那样绘制我的网格。

这是 bindData 的初始状态。

然后在我的绘图功能中:

如果没有

它运作良好。但正如我所说,我确信它不是这样的。

我很感激你能给我的每一个建议。

非常感谢。

EDIT1:我的问题是,当我只绑定一次 vbo 时,为什么它只绘制 1 个点而不是 NxN 点网格。我错过了什么?

0 投票
0 回答
346 浏览

opengl - 从 glDrawElements 切换到 glDrawArrays

我正在使用 LWJGL 和 icosahedron-subdivide-algorithm 来创建 icosphere 网格。

我正在使用 glDrawElements 来渲染球体,它们看起来像这样 ,但我希望得到更低多边形的外观。

经过一番研究,我发现 glDrawArrays 可以实现低多边形外观,所以我切换到 glDrawArrays。在不改变球体本身的任何内容(顶点数组、索引数组等)的情况下,它们现在看起来像这样

甚至主二十面体也完全关闭。我玩弄了二十面体的基本顶点和数组(细分算法用于创建球体)来查看哪里出了问题,但我无法解决问题所在。

值得一提的是,我在 glDrawElements 和 glDrawArrays 中都使用了 GL_TRIANGLES。

任何见解都会很棒。

0 投票
1 回答
477 浏览

ios - OpenGL ES:我应该将 DrawElements 用于 TRIANGLE_STRIP 数组吗?

我正在尝试绘制一个简单的三角形数组。它们都是连接的,所以我目前正在使用 DrawArrays 和 GL_TRIANGLE_STRIP。但是,在检查 XCode 分析器时,它建议改用 DrawElements 和索引数组。

我真的应该这样做吗?我注意到 DrawElements 也有 TRIANGLE_STRIP 的选项,但我没有看到优势,因为当我使用 glDrawArrays 时没有任何重复的顶点。

这是我正在绘制的三角形的图表: 在此处输入图像描述

正如你所看到的,我使用 TRIANGLE_STRIP 时没有重复,那么索引这个有什么优势吗?

0 投票
1 回答
1751 浏览

c++ - OpenGL:glDrawArrays() 抛出异常 (nvoglv32.dll) 访问冲突读取位置 0x00000000

所以我制作了一个基本的 OpenGL 应用程序,一切都很好,直到我实现了一个几何着色器。

我得到的错误是 在 Demo.exe 中的 0x6A67F00A (nvoglv32.dll) 处引发的异常:0xC0000005:访问冲突读取位置 0x00000000。

现在,我不知道着色器是否是导致问题的原因,但在我实现它之前它运行良好。

我做了一些谷歌搜索,似乎有很多不同的原因,其中许多与 VAO 有关,这些原因保持不变。

错误发生在glDrawArrays(GL_TRIANGLES, 0, 6);

这是我的 C++ 代码:

这是我的着色器:

顶点着色器(通过)

几何着色器(冗余,但需要分配)

片段着色器

它的代码量相当大。我会问我的老师,但他周末不在。

如果您需要任何其他信息,请告诉我。

提前致谢!

0 投票
2 回答
42 浏览

android - Draworder OpenGL - 较大的对象大于较小的对象

在我的 OpenGL ES Android 游戏中,我尝试根据它们的 z 值(即 z 平面中的位置)按顺序绘制形状。这意味着首先绘制最小最远的形状(纹理),然后再绘制更大的。我已将形状属性存储在数组列表中,并且在绘制和更新时我使用的是迭代器。假设这是带有z值的arrayList(只是一个例子)

ArrayList 数组列表砖

我对每一帧使用 Collections.sort(..) 对这个 arrayList 进行排序,排序后的列表看起来像这样

也就是说 - 最小的形状在列表中排在第一位,并且最先被绘制。我可以看到数组列表确实已排序,但不知何故什么也没发生。我想要的是较小的形状应该在较大的形状后面。GPU是否有某种绘图顺序的算法?我刚从skia迁移到opengl,对此感到惊讶。

我在这里想念什么?我该如何解决这个问题?

渲染方法

更新(片段)

0 投票
1 回答
297 浏览

c++ - 使用 glDrawArray 函数绘制三角形

我想用 glDrawArrays() 函数在 opengl 中绘制一个三角形。以下是我的代码: .cpp 文件:

.头文件:

使用此代码,我只是得到一个空白窗口。没有绘制任何点。我做错了什么?我的 glDrawArray 函数有什么问题吗?

0 投票
0 回答
200 浏览

android - OpenGL ES - 实例化 - 不同的 uv-coord 一个 drawcall

我在 OpenGL ES3 中有以下关于实例化的问题

我在一次绘制调用中绘制了 64 个形状 - 三角形。好的!

然后我想给形状单独的眼睛,它们在“眨眼”。闪烁表示图集中的不同偏移量(即不同的 uv 坐标)。我可以轻松地为具有相同眼睛状态的所有形状进行一次绘制调用,但如果我希望这些形状处于不同的闪烁模式 - 我如何通过实例化来完成它。方法签名不允许

顶点偏移是缓冲区中的位置,假设第一只眼睛的位置为 59。下一个为 60,依此类推。共有 7 种眼状态和 uv 坐标

所以我有 64 种形状,因为我希望它们有自己的闪烁状态,这意味着不同的偏移量.. 我不知道如何只用一个绘图调用来完成它。

BlinkingEyes 类中的绘制方法

顶点着色器的片段

片段着色器的片段

这个问题有解决方案吗?我可以将信息发送到着色器并告诉它为不同的形状使用不同的 uv 坐标吗?

眼睛(来自地图集的片段)

在此处输入图像描述

0 投票
1 回答
236 浏览

arrays - glDrawArrays 无法绘制动态数组

我正在尝试渲染一个可以扩展到其他对象的四面体。使用静态数组可以很好地绘制四面体。
但是当我将 OFF 文件读入动态数组时,什么也没有出现。编译时没有出现错误。

以下用于从 OFF 文件中获取数据的函数中。mod->faces 从 OFF 文件中获取面数。在这种情况下,它是 4。我检查了从 OFF 文件中读取的顶点,这是准确的。甚至将其与静态数组进行比较。

在初始化()中:

最后在我的 main() 中:

最终我想将数组存储到一个列表中,这样我就可以从不同的 OFF 文件中循环抛出不同的对象。但现在我只想让它画一些东西。任何帮助将不胜感激。谢谢你。

0 投票
1 回答
1116 浏览

android - OpenGL ES 致命信号 11 (SIGSEGV),代码 1,tid 8367 (GLThread 3562) 中的故障地址 0x8

尝试渲染使用库加载的 .obj 时,我调用 glDrawArrays 时发生崩溃。我不知道发生了什么,因为这是我第一次使用 openGL ES。我的猜测是三角形的数量是错误的,在尝试使用 10 作为参数的 glDrawArrays 之后,我意识到这可能不是问题。

我的渲染器的代码: