问题:
在由3个点定义的平面上有抛物线。在这里你可以看到它的样子。 (这是我到目前为止所做的......):Gif about the process
所以我想在抛物线的内部填充一种颜色,并在外部填充不同的颜色。 从3点我计算出抛物线方程。
答案 0 :(得分:1)
您可以绘制全屏四核。
将3个点(或方程式)传递到片段着色器中,检查片段是否在抛物线上方/下方,并用所需的颜色填充。
//Assuming (0,0) is in the middle of the screen:
in vec2 fragmentPosition; //from -1 to 1
uniform vec3 parabola;
void main(void) {
// a*x^2+b*x+c = 0
float a = parabola.x;
float b = parabola.y;
float c = parabola.z;
float x = fragmentPosition.x;
float y = fragmentPosition.y;
if (a*x*x + b*x + c > y) {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
} else {
gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
}
}
如果要在点后面绘制它,请使用z值。
答案 1 :(得分:0)
如果你不想使用着色器,那么你必须对你的屏幕进行细分:取其矩形,将它吐成薄的垂直四边形(从下到上),吐出这些i,2以便它们的极限是你曲线的一部分。用颜色绘制底部的颜色,用另一种颜色绘制顶部颜色。非常类似于数字整合的数字。