Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 遮挡着色器将整个场景变为黑色_Java_Opengl_Glsl_Lwjgl_Culling - Fatal编程技术网

Java 遮挡着色器将整个场景变为黑色

Java 遮挡着色器将整个场景变为黑色,java,opengl,glsl,lwjgl,culling,Java,Opengl,Glsl,Lwjgl,Culling,我正在尝试剔除每一张脸,如果它是法线,则角度为:90

我正在尝试剔除每一张脸,如果它是法线,则角度为:90 我看到的一切都是屏幕变黑了。我刚开始学习GLSL,所以我不知道原因是什么。。。或者如何调试

顶点着色器:

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;
}