opengl - GPU上的二次曲线笔划宽度
问题描述
我想知道如何使用三角形绘制曲线,所以我最终阅读了这两篇文章。 http://commaexcess.com/articles/6/vector-graphics-on-the-gpu http://www.mdk.org.pl/2007/10/27/curvy-blues
正如我正确理解的那样,硬件在三个顶点上插入 u 和 v 。
这是我的结果
我的三角形坐标
vec![100.0, 100.0
100.0, 100.0,
200.0, 100.0];
紫外线坐标
vec![0.0, 0.0
0.5, 0.0
1.0, 1.0]
我的片段着色器看起来像这样
#version 430 core
out vec4 frag_color;
in vec2 uv;
in vec4 cords;
void main() {
float x = uv.x;
float y = uv.y;
float result = (x*x) - y;
if(result > 0.0) {
frag_color = vec4(1.0, 0.1, 0.5, 1.0);
} else {
frag_color = vec4(2.0, 0.2, 3.0, 1.0);
}
}
我想在中点有一个很好的中风。我尝试了以下。
if(result > 0.01) {
frag_color = vec4(1.0,0.1,0.5, 1.0);
} else if(result < -0.01) {
frag_color = vec4(2.0,0.2,1.0, 1.0);
} else {
frag_color = vec4(2.0, 0.2, 3.0, 0.0); // mid point
}
我懂了
但是当我尝试调整三角形的大小时,我得到了这个结果
笔画宽度较粗,但我想保持上一张图像中的宽度。我不知道如何实现这一点,甚至可能吗?
解决方案
推荐阅读
- javascript - React 无法识别 DOM 元素上的 `eventKey`(也是 activeKey)道具
- apache-spark - 尝试在 Pyspark 中保存和加载逻辑回归模型时出错
- replace - 如何在pyspark中替换左连接表中的空值
- sql - 如何在 Netezza 中比较 BOOL 和 INTEGER?
- three.js - 三 js - 如何创建地面反射以仅反射网格
- python - python(cv2)中的旋转图像不会居中
- javascript - JavaScript 余弦相似度函数
- php - Laravel JWT - 使用 Javascript 使用你自己的 API
- php - mysql 只提取用户没有的行
- scala - Scala - 如何从类中访问对象?