opengl - 几何着色器和顶点着色器之间的性能差异

标签 opengl glsl shader

目前正在渲染大约 100 万个顶点的模型。在顶点着色器中,我正在为每个顶点做一些复杂的计算。现在我想提高模型的分辨率。
我对此有两个疑问:

  • 是否建议使用几何着色器将分辨率提高到非常大的因素,例如 64 倍?
  • 如果我引入几何着色器,我可能需要将计算从顶点着色器移动到几何着色器。就性能而言,在顶点着色器中进行操作是否与在几何着色器中进行操作相同。
  • 最佳答案

    Is it advisable to use geometry shader for increasing resolution to very large factors like 64 times.



    绝对不。虽然 GS 可以放大几何图形并执行曲面分割,但这并不是它们真正的用途。它们的主要用途是处理变换反馈数据(特别是可以处理多流输出的硬件)和分层渲染。

    If i introduce a geometry shader i might need to move my computation from vertex shader to geometry shader. Whether doing an operation in verterx shader is same as doing it in geometry shader, in terms of performance.



    在 GS 中尽可能少做一些合理的工作。 GS 发生在 post-T&L 缓存之后,您希望从中获得尽可能多的信息。因此,在顶点着色器中尽可能多地进行实际转换工作。

    关于opengl - 几何着色器和顶点着色器之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189594/

    相关文章:

    c++ - glfw3 编译 undefined reference

    c++ - 导致扬声器产生静电噪声的程序?

    c++ - 多次调用 cv::ogl::Texture2D.copyFrom() 导致 cv::Exception (-219)

    glsl - 有符号距离函数 - 3D 平面

    c++ - OpenGL找不到一些统一变量

    opengl - 着色器变量归一化职责

    unity-game-engine - Shader saturate() 在不应该创建渐变的情况下创建渐变

    c++ - 用OpenGL渲染大量文本的最佳方法是什么

    opengl - GPU 驱动程序如何解释 GLSL 的 "coherent"内存限定符以进行多 channel 渲染?

    c++ - DirectX 着色器无法正常工作?