问题标签 [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 投票
1 回答
190 浏览

windows - glDrawArrays 在使用 GL_POINTS 时给出垂直线

我正在使用glDrawArrayswith绘制一个点GL_POINTS。在我的Intel 82945G Express Chipset Family一切工作正常。但是在ATI Radeon Mobility 5730调整窗口大小时会随机出现垂直线。

这是渲染图片的代码:

我在这里省略了数组初始化。

我已经检查过,在函数执行gDEBugger后,这些行被渲染到后台缓冲区中。glDrawArrays

我在这里看到了类似的问题,但是人们在渲染纹理时遇到了类似的问题。我的情况比较简单。

还有一些建议不要使用GL_POINTS,但这对我来说听起来很奇怪。

我想了解引擎盖下发生了什么。

恕我直言,在特定的驱动程序中有频段实现,但到底发生了什么?

0 投票
1 回答
566 浏览

opengl-es - 在 Opengl ES 中在 FBO 上调用多个 glReadPixels 和 glDrawArrays

在 OpenGL ES 中,是否可以一个接一个地多次调用glReadPixelsFBO glDrawArrays?我面临的问题是我得到的图像都是乱码。

示例代码:

0 投票
1 回答
546 浏览

cocos2d-iphone - cocos2d V3 glDrawArrays 不工作

转换为 cocos2d V3,此代码不会产生绘图:

为什么这段代码在 V3 中不起作用?这段代码是从 CCScene 的 draw 方法中调用的。非常感谢任何帮助。

更新:通过在此代码之前调用 ccDrawPoint 找到部分解决方法(绘制一个小的随机点)。然后 glDrawArrays 绘制正确的形状(读取我的 lineVertices 数组)但忽略我的 colorVertices 数组。如何让 glDrawArrays 使用我的 colorVertices 数组?(此代码在我转换为 V3 之前有效)

0 投票
0 回答
1649 浏览

opengl - glDrawArraysInstanced 的性能问题

我正在尝试实现一个 OpenGL4 实例化绘图算法,其中每个实例都由一个三角形组成。我要实现这种算法的主要原因是:

  • 在基于每个三角形而不是基于每个顶点给出颜色的频繁场景中使用更少 GPU 内存的能力
  • 在不使用几何着色器的情况下执行每个三角形计算的能力,从我的实验来看,这大大减慢了整个管道

我的渲染程序由一个顶点着色器和一个片段着色器组成。顶点着色器如下:

片段着色器是这个:

如您所见,在我的顶点着色器中,我为顶点位置声明了三个顶点属性,为颜色声明了三个顶点属性。所有这些属性都被实例化,并且它们的除数设置为 1。

我之所以拥有三个颜色属性,是因为有时我希望能够为三个三角形顶点设置不同的颜色,而更常见的情况是,我为整个三角形设置一个颜色。在最后一个场景中,我只是将三个颜色属性附加到相同的 VBO,指定相同的步幅和偏移量。

我编写了一个测试应用程序,它绘制了一个四边形矩阵,每个四边形由两个三角形组成。这是我用来初始化顶点数据的代码:

如您所见,我对位置使用单个 VBO,但每个位置属性都使用不同的偏移量连接到 VBO。

对于颜色,我使用单个 VBO,并且所有颜色属性都使用相同的步幅和偏移量连接(从而实现每个三角形的颜色而不是每个顶点的颜色)。

渲染循环如下:

我在集成的 Intel HD 4400 卡和 Nvidia GeForce GT 750M 卡上测试了该应用程序。令人惊讶的是,英特尔显卡的性能比英伟达显卡好得多。以下是一些 fps 统计数据:

800000 个三角形:

  • 英特尔:140 帧/秒
  • 英伟达:31fps

1600000 个三角形:

  • 英特尔:74 帧/秒
  • 英伟达:16 fps

有人对如何提高 Nvidia 卡的性能有任何建议吗?你认为将 TBO 用于位置和颜色会给我带来性能提升吗?

更新:

为了更好地理解这个问题,我使用 GPUView 在 windows 下分析了应用程序。我注意到英特尔和英伟达之间的行为完全不同。

英特尔每帧生成一个大 DMA 数据包 (8 kB),执行速度非常快。相反,Nvidia 在每帧生成大量的小数据包(4-8 字节)并排队,因此,它们必须等待很长时间才能被执行。

这些信息让我想知道这是否可能是 Nvidia 驱动程序错误。你认为这可能吗?

0 投票
1 回答
9407 浏览

opengl - OpenGL:从高度数组中绘制环境的最佳方法?

所以我正在编写一个带有高度映射的openGL程序来制作一个3D户外环境。与所有高度映射一样,每个点在 x&z 轴上与其相邻点的距离相同,但每个顶点的 y 轴不同,具体取决于程序读取的高度图。

到目前为止,我的程序将读取存储在高度图中,并存储在大小等于 (image_width)*(image_height) 的 y 高度数组中。我的问题是,在给定这些数据的情况下,绘制四边形环境的最有效方法是什么?

我认为以某种方式使用 glDrawArrays 是答案,但最初没有任何模式可以处理给定的数据。例如,如果我的数据数组在行之间交替并且如果我在列的末尾停止每个条带,我可以使用 GL_TRIANGLE_STRIP,但是这将需要发送到 glDrawArrays 的数据数组多次存储每行的值。考虑到初始数组仅存储 y 值,它还需要一个数组的大小与我的初始数组相比为 x3。但是,在给定数据的情况下,每帧指定每个四边形肯定不会是有效的吗?

0 投票
1 回答
247 浏览

c++ - glDrawElements 在另一台机器上不起作用

我正在使用带有 g++ 的 OpenGL。这个简单的代码在我的系统中运行良好。它按预期绘制一个矩形。

但是在我朋友的系统中,它给出了分段错误。

GL_UNSIGNED_INT改为GL_INT. 然后至少它没有给出分段错误,但它没有渲染任何东西。

这可能是什么原因?

0 投票
1 回答
575 浏览

java - 使用 OpenGL/LWJGL 使用 glDrawArrays 绘制 VBO 的问题

我在让 VBO 参与我的游戏时遇到了一些困难。我环顾四周,检查了所有常见的错误,但似乎没有什么能让他们画画。

以下是按执行顺序排列的相关代码:

运行一次:


运行每一帧:



用英语术语来说,我在 2D 中渲染不同大小和位置的纯色圆圈。我用即时模式测试了几何,它工作得很好。这可能是非常愚蠢的事情,但我无法弄清楚我的生活是什么。我在另一台计算机上运行此代码,它吐出 0x05 错误硬崩溃,但在这台计算机上它根本不渲染。Ball 对象构造函数接受一个向量作为它的位置、一个速度向量和一个半径作为双精度数。

编辑:这里是那些询问的几何图形和颜色缓冲区代码:

0 投票
1 回答
69 浏览

opengl - OpenGL从神秘缓冲区绘制数据

我在绘制没有索引的缓冲区对象时遇到问题。我的其他索引 vbo 画得很好...

0 投票
2 回答
787 浏览

java - 三角形不在 OSX 上的 OpenGL 2.1 中绘制

我正在学习使用 OpenGL 在 Java 中创建游戏引擎的教程。

我正在尝试在屏幕上渲染一个三角形。一切运行良好,我可以更改背景颜色,但三角形不会显示。我还尝试运行作为教程系列的一部分提供的代码,但它仍然无法正常工作。

教程链接:http: //bit.ly/1EUnvz4

视频中使用的代码链接:http: //bit.ly/1z7XUlE

设置

  • 我试过检查 OpenGL 版本并相信我有 2.1。
  • Mac OSX
  • Java - 日食

Mesh.java

RenderUtil.java

实用程序.java

0 投票
2 回答
844 浏览

c++ - glDrawArrays 访问冲突写入位置

我正在尝试可视化非常大的点云(7 亿点),并且在glDrawArrays调用调试器时抛出访问冲突写入位置异常。我正在使用相同的代码来渲染更小的云(1 亿)并且一切正常。我还有足够的 RAM 内存 (32GB) 来存储数据。

要存储点云,我正在使用std::vector<Point3D<float>>Point3D 所在的位置

顶点数组和缓冲区初始化:

绘图调用:

我还检查了是否抛出了 OpenGL 错误,但我没有发现任何错误。