首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加入RGB和碎片着色器深度缓冲器: GLSL

加入RGB和碎片着色器深度缓冲器: GLSL
EN

Stack Overflow用户
提问于 2017-02-03 06:23:50
回答 1查看 373关注 0票数 2

继续问这个问题:

GLSL : accessing framebuffer to get RGB and change it

是否可以在GLSL的基础上开发以下程序?

  1. 绘制object1
  2. 使用着色器获取深度缓冲区(同时保存rgb)
  3. 同时绘制对象1,对象2
  4. 脱开
  5. 检查深度是否不同(深度2 vs深度4)
  6. 绘制对象1:对于深度未被更改的范围,->绘制与原始RGB相同:对于深度更改的范围,->用不同的RGB绘制

在此基础上,本文提出了一种区分对象1的算法,该算法利用glut函数将目标1隐藏在其他对象中。我使用了glReadbuffer,glDrawbuffer函数。但是那些太慢了,我想用GLSL。

EN

回答 1

Stack Overflow用户

发布于 2017-02-03 09:03:36

如果唯一的目标是当object1隐藏在object2后面时,用不同的颜色集呈现它(这是深度变化的object1的像素),那么我将采用一种完全不同的方法。

  1. 只绘制深度写入的object2 (glDrawBuffer(GL_NONE)glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE))
  2. 绘制object1,深度测试设置为glDepthFunc(GL_GREATER),以及object1在object2后面时所需的颜色
  3. 绘制object1,深度测试设置为glDepthFunc(GL_LESS),以及object1在object2前面时所需的颜色。

与您在问题中描述的算法不同,不需要任何读回操作或额外的帧缓冲区。

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

https://stackoverflow.com/questions/42018019

复制
相关文章

相似问题

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