首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >安卓OpenGL片段着色器分辨率

安卓OpenGL片段着色器分辨率
EN

Stack Overflow用户
提问于 2014-05-20 09:27:09
回答 2查看 1.2K关注 0票数 3

我有一个碎片着色器,运行在25英尺左右。如果屏幕分辨率较低,我猜着色器会运行得更快。有没有办法让我的着色器在低分辨率屏幕上运行?因此,从本质上说,为了获得性能,牺牲细节--输出会更好--。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-20 09:40:56

您还可以进行其他优化(比如呈现较少的原语)

但是,如果您想以较低的分辨率呈现,那么您应该首先呈现到屏幕外的低分辨率帧缓冲区,然后用该缓冲区作为全屏四角体上的纹理重新呈现,使其具有完全分辨率。

编辑:查看您的代码,您可以执行以下操作:

  1. 将代码移动到顶点着色器,并将结果传递给varrying vec3 f_color输出,在片段着色器中将gl_FragColor设置为该输出。
  2. 在-1,-1和1之间建立一个三角形的均匀网格,其中三角形的数量取决于你想要的分辨率。
  3. 画出那个网格
票数 2
EN

Stack Overflow用户

发布于 2014-05-20 09:56:10

从请求的语气来看,我猜想你对OpenGL的要求是新的(因为关于分辨率的要求是非常基本的,而不是有意的,我们都是以某种方式开始的):棘轮怪胎的答案是正确的(在低分辨率的纹理上显示纹理的->render是对分辨率问题的直接回答),然而,正如棘轮怪胎所暗示的那样,你可能应该寻找解决问题的其他方法(因为降低碎片着色器的分辨率会使您的输出看起来很糟糕的™)。

一些提示:

  • 尽量在顶点着色器中做更多的工作:在顶点着色器中,每个顶点可以执行许多计算,然后(通过内插)发送到片段着色器。这是一个巨大的优化源,每次可能的时候都应该被利用
  • 搜索片段着色器中的循环和条件(if/然后),特别是不能展开的周期(可变范围)和不依赖于制服的条件,因为它们在片段着色器级别都是相当繁重的。
  • 如果可能的话,呈现较少的原语
  • 如果您正在使用许多复杂的函数(cos/sin/sqrt等),请尝试缓存结果和/或使用查找表(如果可能的话)
  • 启用剔除和深度测试,以减少几何栅格化的数量,不确定它是否会有帮助,但不会造成伤害;)
  • 如果结果不降低,则降低某些计算的精度。

你可以试着在你的问题中张贴你的片段着色器。

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23755909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档