opengl - OpenGL 2+ 中顶点或片段着色器的代码限制大小是多少

标签 opengl shader

我计划编写一个程序,它将一些参数作为输入并生成自己的片段着色器字符串,然后将其编译、链接并用作片段着色器(它只会在程序开始时完成一次)。
我不是计算机图形方面的专家,所以我不知道这是否是标准做法,但我绝对认为它有一些有趣的应用程序的潜力——不一定是图形应用程序,但可能是计算应用程序。

我的问题是 OpenGL 中着色器的代码大小限制是多少,即 OpenGL 可以为图形处理器上的程序合理分配多少内存?

最佳答案

没有代码大小限制。好的,有,但是:

  • OpenGL 没有给你查询它的方法,因为:
  • 这样的数字毫无意义,因为它不会转换为您可以在 GLSL 中直接控制的任何内容。

  • 长 GLSL 着色器可能会编译,而短着色器则不能。为什么?因为编译器可能已经能够优化长着色器的大小,而短着色器扩展到大量操作码。简而言之,GLSL 级别太高,无法有效量化此类限制。

    在任何情况下,鉴于 GL 2.x 级硬件的限制,您可能不会遇到任何长度限制,除非您尝试这样做或正在执行 GPGPU 工作。

    关于opengl - OpenGL 2+ 中顶点或片段着色器的代码限制大小是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14605775/

    相关文章:

    c - OpenGL - 旋转 2D 小行星船

    opengl - 如何将值传递给 OpenGL 中的顶点着色器的属性数组?

    c++ - 在这种情况下我应该使用顶点着色器吗?

    opengl - 使用 LibGDX 的法线映射 GLSL

    glsl - 在顶点着色器中应用 Y 旋转时纹理坐标发生偏移

    c - 为什么我的 openGL 纹理只覆盖了我的四边形的一半?包含来源

    c++ - GLSL 将颜色数据从片段着色器发送到顶点着色器似乎总是等于 0

    java - 无法使用深度附件渲染到 FBO

    java - Android 中的自定义曲线

    c - opengl渲染到纹理只看到一个黑色区域