glsl - GLSL 只渲染 Z 位置在制服 minZ 和 maxZ 之间的片段
问题描述
我有一个包含数千个顶点的网格。该模型代表了一个复杂的结构,需要对其整体和部分进行可视化。我的应用程序的用户应该能够定义 Z 轴的最小值和最大值。只应渲染位置在这些限制之间的片段。
我天真的解决方案是编写一个片段着色器,有点像这样:
#extension GL_EXT_texture_array : enable
uniform sampler2DArray m_ColorMap;
uniform float m_minZ;
uniform float m_maxZ;
in vec4 fragPosition;
in vec3 texCoord;
void main(){
if (fragPosition.z < m_minZ || fragPosition.z > m_maxZ) {
discard;
}
gl_FragColor = texture2DArray(m_ColorMap, texCoord);
}
或者,我可以尝试以某种方式过滤掉顶点着色器中的顶点。如果它们超出范围,也许通过将它们的位置值设置为 (0,0,0,0)。
我相当肯定这两种方法都可以工作。但我想知道是否有一些我不知道的更好的方法来做到这一点。某种用于沿轴对模型进行切片的标准方法。
请记住,我不想为每个切片使用单独的 VBO,因为它们可以由用户动态设置。
非常感谢。
解决方案
推荐阅读
- java - 为什么 toMap 放置不当会导致 RXJava 出现问题?
- javascript - Highcharts:如何在多系列图表中使用数据集设置每列,每个系列的颜色?
- git - 暂存修改的文件
- sass - Gulp SaSS 任务中的 Font Awesome 未定义变量
- java - openjfx 1.8 不包含 javafx.fxml 包
- python - 我在 Python 上的 Selenium 项目中遇到问题
- spf - 如何结合这两个 SPF 记录?
- python - 通过 Python Flask 创建 SQLite 数据库时出现“未找到应用程序”错误
- java - Travis 使用 ant 代替 maven
- c - 坚持使用 pthreads 进行矩阵乘法