Opengl 纹理坐标与NV路径渲染

Opengl 纹理坐标与NV路径渲染,opengl,Opengl,我正在尝试将GLSL片段着色器应用于使用NV路径渲染渲染的某些文本。我的问题是路径渲染不使用顶点着色器,我需要以某种方式将纹理坐标输入片段着色器 我在名为nvpr\u着色器中找到了一个纹理路径的示例,但是这个示例使用cg着色器,并且似乎依赖片段着色器能够处理TEXCOORD0。第15页描述了该方法 我以前没有使用过CG,所以我不完全确定管道是如何工作的。这是示例中的cg着色器: void bumpmap(float2 normalMapTexCoord : TEXCOORD0,

我正在尝试将GLSL片段着色器应用于使用NV路径渲染渲染的某些文本。我的问题是路径渲染不使用顶点着色器,我需要以某种方式将纹理坐标输入片段着色器

我在名为nvpr\u着色器中找到了一个纹理路径的示例,但是这个示例使用cg着色器,并且似乎依赖片段着色器能够处理TEXCOORD0。第15页描述了该方法

我以前没有使用过CG,所以我不完全确定管道是如何工作的。这是示例中的cg着色器:

void bumpmap(float2 normalMapTexCoord : TEXCOORD0,
         float3 lightDir          : TEXCOORD1,
         out float4 color : COLOR,
        uniform float3 lightPos,
        uniform sampler2D   normalMap)
{
  // Normalizes light vector with normalization cube map
  float3 light = normalize(lightPos - float3(normalMapTexCoord,0));
  // Sample and expand the normal map texture   
  float3 normalTex = tex2D(normalMap, normalMapTexCoord).xyz;
  float3 normal = expand(normalTex);
  // Diffuse lighting
  float diffuse = dot(normal,light);

  // Decide the brick color based on how flat (red) or angled (red) the surface is.
  float3 red = float3(1,0,0);
  float3 white = float3(1,1,1);
  float3 brick = normal.z > 0.9 ? red : white;

  color = float4(brick*diffuse,1);
}

是否可以以类似的方式在GLSL片段着色器中设置纹理坐标?i、 e.我可以在不使用CG工具箱的情况下将纹理坐标输入GLSL frag着色器进行路径渲染吗?

您可以根据
gl\u FragCoord
计算所有内容。你试过了吗?这对2D/ortho渲染的文本效果很好,谢谢你的提示。但无法使用透视渲染文本,因为gl_FragCoord“包含片段的窗口相对坐标(x、y、z、1/w)值”-而不是直接渲染。你需要应用单应。这很有意义。。。应用逆mvp矩阵时有些问题正在解决。不是很完美,但有一些东西可以一起工作。。。谢谢你的信息。FWIW我使用的东西大致是
vec4q=vec4(gl_FragCoord.xy,1,1)/vec4(res.xy,1,1);mat4 ivp=反向(投影矩阵*uViewMatrix*uModelMatrix);vec4 ndc=vec4((gl_FragCoord.x/uResolution.x-0.5)*2.0,(gl_FragCoord.y/uResolution.y-0.5)*2.0,(gl_FragCoord.z-0.5)*2.0,1.0);vec4 clip=ivp*ndc;vec3顶点=(clip/clip.w).xyz