opengl - 我可以通过顶点着色器修改 GPU 中的顶点缓冲区吗?
问题描述
由于某种原因无法在网上找到答案。我想通过着色器以类似的形式更新 GPU 中的顶点属性:
#version 330 core
layout(location = 0) in vec4 position;
uniform mat4 someTransformation;
void main()
{
position = position * someTransformation;
gl_Position = position;
}
是否可以?
解决方案
你能写出你写的代码吗?是的,这是法律法规。
这会改变任何 GPU 存储的内容吗?不。
虽然VS 可以通过多种方式直接操作缓冲区的内容,但如果正在操作的缓冲区也可能被用作渲染命令的属性数组,那么您将有未定义的行为。
您可以使用 SSBO 来操作未用作渲染输入的其他存储。您可以使用变换反馈来累积顶点处理的数据输出。但是你不能让 VS 直接修改它自己的输入数组。
推荐阅读
- javascript - 合并嵌套数组并对值求和
- python - 如何在不同节点训练独立的keras模型(尴尬的并行工作负载)
- php - 获取数组中键周围的数字
- python - 由于语法无效,气流 initdb 失败
- javascript - ipad safari中的jquery css动画不流畅
- javascript - 如何在 JQuery 的父函数中为全局变量赋值
- git - 嵌套仓库:取消子模块与 github 的链接,但父模块仍跟踪文件
- java - 如何使用自动线程管理在 Java 中实现生产者/消费者
- php - 如何使面包屑响应?
- search - 谷歌求职未显示带有 schema.org 语法的公司徽标集