C++ 用于曲线隐式渲染的着色器

C++ 用于曲线隐式渲染的着色器,c++,opengl,glsl,geometry-shader,C++,Opengl,Glsl,Geometry Shader,我试图为曲线的隐式渲染创建着色器。不幸的是,它出现故障(问题很可能在于几何体着色器),只显示一个清晰的屏幕 为可能错误的术语道歉。我的程序应该处理特定区域中的每个单独像素,并根据隐式方程对其进行着色,从而定义曲线-因此,隐式渲染,而不是通过线条条对曲线进行近似处理 顶点着色器-将线条条作为输入、两个平面坐标以及所述坐标处曲线和x轴之间的角度 #version 330 core layout (location = 0) in vec2 x; layout (location = 1) in f

我试图为曲线的隐式渲染创建着色器。不幸的是,它出现故障(问题很可能在于几何体着色器),只显示一个清晰的屏幕

为可能错误的术语道歉。我的程序应该处理特定区域中的每个单独像素,并根据隐式方程对其进行着色,从而定义曲线-因此,隐式渲染,而不是通过线条条对曲线进行近似处理

顶点着色器-将线条条作为输入、两个平面坐标以及所述坐标处曲线和x轴之间的角度

#version 330 core

layout (location = 0) in vec2 x;
layout (location = 1) in float t;

out VS_OUT {
  float t;
} vs_out;

void main ()
{
  vs_out.t = t;
  gl_Position = vec4 (vec3 (x, 0), 1);
}
几何体着色器-在直线上创建三角形,在其中测试单个像素

#version 330 core

layout (lines) in;
layout (triangle_strip, max_vertices = 50) out;

in VS_OUT {
  float t;
} gs_in[];

out float k;

out vec2 R;

void main ()
{    
  vec2 A = vec2 (gl_in [0].gl_Position);
  vec2 B = vec2 (gl_in [1].gl_Position);

  float u = gs_in [0].t;
  float v = gs_in [1].t;

  float a = A.x - B.x;
  float b = A.y - B.y;
  float D = sin (u) * cos (v) - cos (u) * sin (v);

  vec2 V = A + vec2 (cos (u), sin (u)) * (- sin (v) * a - cos (v) * b) / D;

  float p = (cos (v) * a + sin (v) * b) / D;
  float q = (- cos (u) * a - sin (u) * b) / D;

  vec2 S = A + vec2 (sin (u), cos (u)) * p;

  gl_Position = vec4 (vec3 (V, 0), 1);
  R = V - S;
  EmitVertex ();

  gl_Position = gl_in [0].gl_Position;
  k = p;
  R = A - S;
  EmitVertex ();

  gl_Position = gl_in [1].gl_Position;
  k = q;
  R = B - S;
  EmitVertex ();

  EndPrimitive();
}  
片段着色器-将位于曲线附近的像素着色为白色

#version 330 core

in float k;

in vec2 R;

out vec4 bv;

float lyn (const float x)
{
  if (abs (x) < 0.1)
    return 1;
  else
    return 0;
}

float kv (const vec2 x, const float r)
{
  return dot (x, x) - r * r;
}

void main ()
{
  bv = vec4 (lyn (kv (R, k)));
}
#版本330核心
在浮动k中;
在vec2r;
out vec4 bv;
浮点lyn(常量浮点x)
{
如果(abs(x)<0.1)
返回1;
其他的
返回0;
}
浮动千伏(恒定矢量2 x,恒定浮动r)
{
返回点(x,x)-r*r;
}
空干管()
{
bv=vec4(lyn(kv(R,k));
}
您能否明确定义问题中的“曲线隐式渲染”是什么?否则,许多读者可能很难理解这个问题。这可能会让你感兴趣。你能清楚地定义问题中的“曲线隐式渲染”是什么吗?否则,许多读者可能很难理解这个问题。这可能会引起你的兴趣