如何在OpenGl中获取正确的屏幕空间坐标,以获得近剪裁平面前面的顶点?

时间:2017-04-05 08:24:31

标签: opengl glsl linear-algebra projection geometry-shader

我正在尝试使用宽度>制作宽线10px使用此主题作为示例https://forum.libcinder.org/topic/smooth-thick-lines-using-geometry-shader。 但我遇到了一个问题:琐碎的视角划分

gl_Position = vec4(gl_PositionIn[0].xy/gl_PositionIn[0].w + width, 0, 1);

给了我近平面前的椎体(w <0)的不良行为。

是否可以为这些顶点计算正确的屏幕空间坐标? 或者,坐标可以计算为

float w = 1.0;
if(gl_PositionIn[0].w < 0)
    w = - 1.0;
gl_Position = vec4(gl_PositionIn[0].xy/abs(w) + width, 0, w);

然而,它使线条视角,但我希望线条恒定宽。它可以帮助禁用gl_Position的透视插值吗?是否有某种方法可以在#version 120着色器中禁用(或补偿)它?

0 个答案:

没有答案