问题标签 [transform-feedback]

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 投票
0 回答
261 浏览

linux - linux下如何使用opengl扩展?(不支持 GL_ARB_transform_feedback3)

我很难理解 OpenGL 扩展机制。我正在使用 OpenGL 3.3/Mesa 10.3.2 在 Ubunut 下开发。

如果我运行 glxinfo,它会显示所需的扩展名:GL_ARB_transform_feedback3 和 glxinfo -l 它显示了 4 个缓冲区的预期限制:GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = 4

不过,如果我有一个 OpenGL 上下文 3.3 并运行一个普通的 GS

我得到的是:0:4(12):错误:几何着色器不支持扩展“GL_ARB_transform_feedback3”

我已经阅读了许多网页和书籍,我不知道我错在哪里。

使用的硬件相当新,一台带有英特尔 (i915) 图形适配器的笔记本电脑和一台带有 NVIDIA (GTX 7xx) 图形适配器的台式机。

我对 glxinfo 的理解错了吗?我怎样才能让这个扩展运行?

谢谢您的帮助。

0 投票
1 回答
49 浏览

opengl - 变换反馈和 glMultiDrawArrays 之间的交互?

我有一个相同长度的绘制缓冲区和一个变换反馈缓冲区(例如,1000 个顶点),但绘制缓冲区不是连续的 - 例如,我感兴趣的数据位于索引 0-100 和 900-1000 中。现在我宁愿不处理额外的 800 个顶点或进行两次绘制调用,所以我使用 glMultiDraw* 将两个范围批处理在一起。我还没有找到说明转换反馈是否会被类似地填充(索引为 0-100 和 900-1000 中的数据)、压缩成连续部分(0-100、101-201)或完全其他内容的文档。有谁知道会发生什么,或者文档中指定了这种行为?

0 投票
1 回答
92 浏览

shader - 渲染粒子

我正在尝试创建一个粒子系统。我正在使用转换反馈,此时我只是想让它发挥作用。问题是绘制循环的每次迭代都会渲染多个点。尽管我的粒子缓冲区只有一个点的空间,但似乎点数还在不断增加。循环不是绘制一个然后移动的点,而是为每次迭代添加一个点。下面是程序的代码,然后是我的顶点着色器的代码。目前我没有使用任何几何着色器。

如果有任何不清楚的地方,请告诉我,并提前致谢。

0 投票
1 回答
297 浏览

c++ - 缺少 Qt OpenGL 变换反馈缓冲函数

我一直在学习 OpenGL的教程系列,而我正在尝试做的当前教程涉及使用 OpenGL 变换反馈缓冲区创建粒子系统。

在我的应用程序中,我一直在使用 Qt 版本 5.4.2 进行简单的 2D 界面设计以及 3D 渲染,因为它似乎有大量用于使用 OpenGL 的类。

到目前为止一切都很顺利,但是尽管可以访问 4.3 版之前的 OpenGL 函数,但我似乎仍然缺少使用Transform Feedback buffer的函数,根据OpenGL wiki ,它自 3.0 版以来一直是核心函数。

我做了一些快速研究,发现 2012 年的旧新闻和博客文章可能会在未来支持这些功能,但是从那以后我找不到任何相关的东西。

在过去,我也看到人们想出一些方法来访问 Qt 包装器没有直接实现的其他功能,但我不确定如何自己做这件事。

那么,简而言之,如何在 Qt 5.4.2 中使用 OpenGL 变换反馈缓冲区和其他类似功能?

我真的很讨厌被困在这样的地方,因为包装器还没有完成。

在偶然的情况下,我只是缺少一个标题包含,我尝试包括以下内容,但我所追求的功能仍然未定义:

0 投票
1 回答
1629 浏览

java - GLES30.glGetBufferSubData 在哪里?如何读取转换反馈数据 opengles 3.0

因此,我正在关注我可以在此处找到的关于转换反馈的最简单示例之一,并将其​​转换为 Android/Java,但 Android 似乎缺少glGetBufferSubDataOpenGL ES 3.0 中可用的功能。

我已经尝试搜索Android Source以查看在 JNI 下调用另一个方法时是否使用了此方法,但我不确定我是否正在寻找正确的位置。

如果此功能不存在,我如何从转换反馈中读取数据?我看过glGetTransformfeedbackVaryingglGetBufferPointervglReadBuffer似乎没有人能做我想做的事。

这是我的代码:

我的最终实现不需要读取数据,只需在下一次传递(反馈)的着色器中使用它。但这确实是第一步。

0 投票
1 回答
4239 浏览

android - Android 设备上的 OpenGLES 3.0 着色器编译错误,用于输入和输出存储限定符

所以我正在更新我的应用程序以使用 OpenGLES 3.0 来利用变换反馈,但着色器没有编译。

错误:

这是顶点着色器代码:

下面是编译代码:

...

有人看到这有什么问题吗?如果我分别更改inoutattribute varying它不会引发错误,但 glUseProgram 会引发 gl 错误 1282“无效操作”。

这就是我为 es 版本 3.0 设置 GL 的方式:

0 投票
1 回答
955 浏览

android - glMapBufferRange() 使用 TrasnformFeedback 在 Android OpenGLES 3.0 中返回全零

更新:这正在工作中,现在正在讨论要点!谢谢雷托

我正在按照这个示例进行转换反馈的 Android 实现。运行得很好,没有任何错误,但是在读取 TransformFeedback 缓冲区时我得到了全零glMapBufferRange()

logcat 输出如下所示:

根据这个问题,您可以将返回的缓冲区转换为字节缓冲区,所以我不认为转换是问题。即使数据向后输出,如果着色器代码正确计算变换反馈变量并且我正确链接变换反馈,它也不应该全为零。

0 投票
1 回答
374 浏览

c++ - OpenGL变换反馈没有返回任何东西

我正在开发一个使用几何着色器和变换反馈创建几何的项目。

我目前正在尝试让几何着色器返回其输入(1 个三角形)而不更改/添加任何内容,但它不起作用。

我会很感激我能得到的任何帮助/建议。以下是我的部分代码:

转换反馈程序的创建:

VBO、VAO 和 TFO 的创建:

渲染方法:

顶点着色器:

几何着色器:

0 投票
1 回答
49 浏览

c++ - 变换反馈演示在 Xcode 上获得零

我从这里下载了一个演示,在 xcode 中我删除了 glewInit(),其他一切都保持不变。我运行它没有错误也没有警告,但输出全为零,这是为什么呢?

我的 Mac:OS X EI 队长,Intel Iris Graphics 6100

这是演示:

我的输出:

0 投票
0 回答
241 浏览

opengl - glDrawTransformFeedbackStream,流是指什么?

我将此示例从g-truc移植到 jogl ,它可以正常工作,一切都很好。

但现在我试图准确理解streamofglDrawTransformFeedbackStream指的是什么。

基本上vec4 position输入被转换为

如下:

转换流.vert ,转换流.geom

然后我简单地渲染转换后的对象glDrawTransformFeedbackStream

反馈流.vert反馈流.frag

现在,根据他们说的文档:

指定从中检索原始计数的变换反馈流的索引。

酷,所以如果我把我的绑定feedbackArrayBufferName0 这里

我想应该是这样的。

几何着色器也(仅)输出颜色以索引 0。位置呢?是否假定它们已经在流 0 上?如何?从glTransformFeedbackVaryings?

因此,我尝试将对该流的所有引用切换为 1 以检查它们是否都一致,然后它们是否引用了相同的索引。

所以我修改了

以及几何着色器内部

但如果我跑步,我会得到:

想知道发生了什么,我在这里找到了这个

这是发生在我身上的事吗?position索引 0 和颜色索引 1?

我只是想知道我的假设是否正确。如果是,我想通过更改流索引来证明这一点。因此,我还想知道如何position在更改后将 on stream 1 与颜色一起设置。我应该以这种方式修改几何着色器的输出layout(triangle_strip, max_vertices = 3, xfb_buffer = 1) out;吗?

因为它抱怨

然后我添加它,我得到

但是现在他们应该都在流 1 上,我错过了什么?

此外,流的定义是什么?