opengl - 我应该为不使用 MVP 矩阵的对象编写一个新的顶点着色器吗?
问题描述
我一直在使用带有相机控件的 OpenGL 编写 2d 渲染器,但是有些对象不应该应用相机,因为它们用于绘制按钮、健康条等无论在哪里都会留在屏幕上的东西你的相机是。我应该为这些对象编写单独的顶点着色器还是应该使用相同的顶点着色器?
如果我使用相同的顶点着色器,我应该做这样的事情吗
#version 330 core
layout(location = 0) in vec4 position;
uniform int haveCameraAppliedTo;
uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;
void main()
{
if(haveCameraAppliedTo == 0)
{
gl_Position = position;
}
if(haveCameraAppliedTo == 1)
{
gl_Position = projection * view * model * position;
}
}
还是他们处理这个问题的不同方式?
解决方案
其实我觉得我可以gl_Position = (projection * view * model * haveCameraAppliedTo * position) + (position * (1 - haveCameraAppliedTo));
。如果变量 haveCameraAppliedTo 为 0,它会取消(projection * view * model * haveCameraAppliedTo * position)
部分方程并只留下位置,如果变量 haveCameraAppliedTo 为 1,它会留在 MVP 矩阵中并取消(position * (1 - haveCameraAppliedTo))
方程的一部分。如果这效率低下或速度慢,请告诉我。谢谢你。
推荐阅读
- python - 如何使用python逻辑将一个工作的结束时间设置为下一个工作的开始时间?
- android - 开发人员错误验证 Gmail 登录 Android - 异常 10
- reactjs - 一个
使用 react-router-dome 可能只有一个子元素。一世 - javascript - 如何将两个数组与对象进行比较以过滤相似的数组(vanilla JS)
- java - 如何计算 JTextArea 的行和列?
- python - 使用 PyCharm 读取 pyspark 中的 avro 文件
- c# - .NET Core 打开 Linux FIFO(命名)管道块执行
- python - Snakemake“X 秒后丢失文件”错误
- adobe - Adobe ExtendScript Javascript:用包含 UI 元素的函数替换字符串
- python - 即使 Python 脚本没有焦点,也可以侦听快捷方式(如 WIN+A)