Java 遮挡着色器将整个场景变为黑色
我正在尝试剔除每一张脸,如果它是法线,则角度为:90Java 遮挡着色器将整个场景变为黑色,java,opengl,glsl,lwjgl,culling,Java,Opengl,Glsl,Lwjgl,Culling,我正在尝试剔除每一张脸,如果它是法线,则角度为:90
uniform vec3 camera_Position;
void main(void)
{
vec4 vertex_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
vec3 N = gl_Normal.xyz;
vec3 V = camera_Position - vertex_Position;
float angle = degrees(acos(dot(N,V)));
if(angle >= 90) {
return;
}
if(angle <= 270) {
return;
}
gl_Position = vertex_Position;
}
无法在顶点着色器中丢弃顶点。否则将破坏基本体程序集。我认为当法线在曲面上平滑时,你的方法无论如何都不能在顶点着色器中工作。顺便说一句:你想做的是,硬件已经为你做了,我已经使用背面消隐,但是在消隐之后那些背对着我的脸呢?我也想删除这些,因为它可能会使渲染速度加倍。在剔除之后,应该如何使面指向远离您的方向?背面剔除是光栅化之前的最后一个阶段,因此在此之后无法更改基本体。我得到了一个体素世界,在那里我生成了所有的面,甚至是那些指向我的面(例如世界上的一座山)。这座山包含各个方向的面,但你只能看到正面朝着你的面。我已经在这里只谈正面了。否则,如果你从另一边看,山上会有洞。你现在明白我的意思了吗?@user3088126:在背面剔除之后,没有更多的原语面朝别处(或者朝向你,取决于剔除模式)。这就是背面剔除的全部要点。
void main()
{
gl_FragColor = gl_Color;
}