- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从头开始实现 webgl 选取,并决定走 GLSL 路线,而不是光线相交测试。
所以我将整个场景渲染到一个单独的帧缓冲区中,为每个对象分配一个唯一的颜色,该颜色作为统一变量传递给片段着色器。当场景渲染时,我 gl.readPixels() 缓冲区,并获取单击坐标处的颜色值(我反转坐标系统以考虑与浏览器坐标系统不同的 GL)。
我遇到的问题是,着色器将传递给 gl_FragColor 着色器输出的颜色表示为 vec4 float ,每个颜色 channel 的范围为 0.0-1.0,而 gl.readPixels() 将颜色 channel 返回为 0-255 范围内的整数...进行此转换会损失一些精度,并且可能会产生拾取错误(如果场景中有很多对象(超过 255 个),或者如果整数到浮点舍入大于区分不同对象 ID 所需的粒度) )。
有人知道如何解决这个问题,或者为我指明正确的方向吗?readPixels() 可以返回 0.0-1.0 范围内颜色 channel 的浮点值吗?我可以打包分布在多个 channel 上的单个对象 ID(以便我不限于单个 channel 并且只能选择 255 个对象吗?)
感谢您的帮助
最佳答案
在 WebGL 中存在一些将 float 从 GPU 读取到 CPU 的技巧:
http://lab.concord.org/experiments/webgl-gpgpu/webgl.html
更具体:
关于3d - webgl 和 glsl 选取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16905302/
在下面的代码中,我想不必添加undefined作为filteredDevice的类型注解。我认为一个被过滤的设备不应该是未定义的,因为我过滤掉了未定义的设备。 但是如果我删除 undefined类型注
我有一个 UIButton,其文本来自服务器。按钮的宽度是固定的。我想要的是,如果按钮的文本超过按钮的宽度,文本应该在按钮内选取框。如果文本适合按钮宽度,则不应有选取框效果。 我点击了一些链接(one
我正在从头开始实现 webgl 选取,并决定走 GLSL 路线,而不是光线相交测试。 所以我将整个场景渲染到一个单独的帧缓冲区中,为每个对象分配一个唯一的颜色,该颜色作为统一变量传递给片段着色器。当场
例如,我有包含多个对象的数组, var arr = ["a", "b", "c", "d"]; 我想要的是从该数组中选取 2 个随机对象,例如“a”和“c”,并将这 2 个对象推送到另一个数组中,例如
我是一名优秀的程序员,十分优秀!