Tag: 着色器

如何在片段着色器中使用gl_FragCoord.z在现代OpenGL中呈现线性深度?

我阅读了大量有关使用片段着色器获得深度的信息。 如 http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=234519 但我仍然不知道gl_FragCoord.z是否是线性的。 GLSL规范说,它的范围是[0,1]屏幕sapce没有提到它是线性的。 我认为线性是至关重要的,因为我将使用渲染模型来匹配Kinect的深度图。 那么如果它不是线性的,如何在世界空间中线性化呢?

OpenGL – OBJ中的顶点法线

我想知道如何使用顶点法线作为闪电效果? 目前我所拥有的是我可以发送顶点和纹理坐标到着色器,并使用它们,但与法线,我不知道如何在着色器程序中使用它们。 以下是我到目前为止。 // vertex shader layout(location = 0) in vec4 vert; layout(location = 1) in vec4 color; layout(location = 2) in vec2 texcoord; uniform mat4 m_model; uniform mat4 m_view; uniform mat4 m_proj; void main() { gl_Position = m_proj * m_view * m_model * vert; } // fragment shader in vec2 fragtexcoord; out vec4 color; […]