gpt4 book ai didi

ios - 基于 GLPaint 的 OpenGL ES 混合问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:38 25 4
gpt4 key购买 nike

我正在开发一款基于 Apple 的 GLPaint 示例代码的应用程序。我已将透明颜色更改为透明黑色并添加了一个不透明度 slider ,但是当我将颜色与低不透明度设置混合在一起时,它们不会按照我期望的方式混合。它们似乎以光线混合的方式混合,而不是油漆混合的方式。这是我的意思的一个例子:

enter image description here

“期望的结果”是通过使用 glReadPixels 分别渲染每种颜色并将其与先前渲染的图像合并(即使用苹果的默认混合)获得的。

但是,将每一帧与前一帧混合太耗时,无法实时完成,我怎样才能让 OpenGL 正确混合颜色?我已经在线研究了很长时间,但尚未找到适合我的解决方案,如果您需要任何其他信息来帮助,请告诉我!

最佳答案

从目前的情况来看,没有简单的解决方案。对于您正在尝试做的事情,您需要自定义着色器。仅使用 GLKit 是不可能的。

幸运的是,您可以混合使用 GLKit 和 OpenGL ES。

我的建议是:

  1. 停止将 GLKit 用于除设置渲染之外的所有事情带有 GLKView 的表面(没有 GLKit 很乏味)。
  2. 使用带有自定义着色器的 OpenGl 程序来绘制支持 FBO 的纹理。
  3. 使用带有自定义着色器的第二个程序进行后期处理(在将上述纹理绘制到四边形之后,然后将其渲染到屏幕上)。

一个好的起点是加载 Xcode 附带的 OpenGl 模板。并开始修改它。警告:如果您不了解着色器,那么此处的代码将毫无意义。它绘制 2 个立方体,一个使用 GLKit,一个不使用 - 使用自定义着色器。

开始学习的引用资料:

最后,如果您真的想充分发挥 OpenGL ES 的潜力,那么您真的应该花时间通读 OpenGL ES 2.0 programming guide .尽管它已有 6 年历史,但它仍然具有相关性,并且是我找到的唯一一本正确解释所有概念的书。

关于ios - 基于 GLPaint 的 OpenGL ES 混合问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com