【问题标题】:Reading variable from vertex shader for rendering in webgl从顶点着色器读取变量以在 webgl 中进行渲染
【发布时间】:2017-04-04 11:36:02
【问题描述】:

我想在移动和静态对象之间实现碰撞检测器。我正在考虑这样做的方式是,如果移动对象的任何顶点与静态对象的位置相交,则每次检查顶点着色器。

通过上述操作,我将在顶点着色器中获得碰撞点,但我想在 js 文件中使用该变量进行渲染。 有什么办法吗。

【问题讨论】:

    标签: webgl


    【解决方案1】:

    在 WebGL 1 中,您不能直接从顶点着色器中读取任何数据。您可以做的最好的事情是使用顶点着色器来影响在片段着色器中渲染的像素。因此,您可以例如设置gl_Position,因此如果测试失败,则不会渲染任何内容,如果测试通过,则会渲染单个像素。或者您可以设置一些变量,根据您的测试结果设置某些颜色。然后您可以使用gl.readPixels 读取像素,或者您可以将写入的纹理传递给不同的绘制调用中的另一个着色器。

    在 WebGL2 中,您可以使用变换反馈来允许顶点着色器将其变量写入缓冲区。然后,您可以在其他绘图调用中使用该缓冲区或使用 gl.getSubBuffer 读取其内容

    在 WebGL2 中,您还可以进行遮挡查询,这意味着您可以尝试绘制一些东西并测试它是否真的被绘制了,或者深度缓冲区是否阻止了它被绘制。

    【讨论】:

    • 如何从 webgl2.0 中的顶点着色器写入变量
    • 我在 webgl 中找不到任何关于转换反馈的好文档。您能否粘贴任何教程的链接。
    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    相关资源
    最近更新 更多