// for testing only void FrustrumCulling_WriteNextFrameEvent() { SetupFrustrum(); IGraphicsHelper g = GraphicsHelperFactory.GetInstance(); /* * g.SetMaterialColor(new Color(1, 1, 0)); * Gl.glBegin(Gl.GL_LINES); * g.Vertex(camerapos + viewray * 0.51 + HNear / 2 * 0.95 * right + VNear / 2 * 0.95 * up); * g.Vertex(camerapos + viewray * 0.51 - HNear / 2 * 0.95 * right + VNear / 2 * 0.95 * up); * Gl.glEnd(); * Gl.glBegin(Gl.GL_LINES); * g.Vertex(camerapos + viewray * 0.51 - HNear / 2 * 0.95 * right - VNear / 2 * 0.95 * up); * g.Vertex(camerapos + viewray * 0.51 + HNear / 2 * 0.95 * right - VNear / 2 * 0.95 * up); * Gl.glEnd(); */ g.SetMaterialColor(new Color(1, 0, 1)); Gl.glBegin(Gl.GL_LINES); g.Vertex(camerapos + viewray * 1050 + HFar / 2 * 0.95 * right + VFar / 2 * 0.95 * up); g.Vertex(camerapos + viewray * 1050 - HFar / 2 * 0.95 * right + VFar / 2 * 0.95 * up); Gl.glEnd(); Gl.glBegin(Gl.GL_LINES); g.Vertex(camerapos + viewray * 1050 - HFar / 2 * 0.95 * right - VFar / 2 * 0.95 * up); g.Vertex(camerapos + viewray * 1050 + HFar / 2 * 0.95 * right - VFar / 2 * 0.95 * up); Gl.glEnd(); g.SetMaterialColor(new Color(1, 0, 0)); Gl.glBegin(Gl.GL_LINES); g.Vertex(viewray * 10); g.Vertex(viewray * 100); Gl.glEnd(); g.SetMaterialColor(new Color(0, 1, 0)); Gl.glBegin(Gl.GL_LINES); g.Vertex(viewray * 10); g.Vertex(viewray * 10 + right * 100); Gl.glEnd(); g.SetMaterialColor(new Color(0, 0, 1)); Gl.glBegin(Gl.GL_LINES); g.Vertex(viewray * 10); g.Vertex(viewray * 10 + up * 100); Gl.glEnd(); g.SetMaterialColor(new Color(0, 1, 1)); for (int i = 0; i < 6; i++) { Gl.glBegin(Gl.GL_LINES); g.Vertex(planes[i].point + viewray * 100); g.Vertex(planes[i].point + planes[i].normalizednormal * 100 + viewray * 100); Gl.glEnd(); } //Console.WriteLine( CheckObject(camerapos - 3 * viewray, 2) ); //System.Environment.Exit(0); }
// for testing only void FrustrumCulling_WriteNextFrameEvent(Vector3 camerapos) { SetupFrustrum(); IGraphicsHelper g = GraphicsHelperFactory.GetInstance(); g.SetMaterialColor(new Color(1, 1, 0)); Gl.glBegin(Gl.GL_LINES); g.Vertex(camerapos + viewray * nearclip * 1.1 + HNear / 2 * 0.95 * right + VNear / 2 * 0.95 * up); g.Vertex(camerapos + viewray * nearclip * 1.1 - HNear / 2 * 0.95 * right + VNear / 2 * 0.95 * up); Gl.glEnd(); Gl.glBegin(Gl.GL_LINES); g.Vertex(camerapos + viewray * nearclip * 1.1 - HNear / 2 * 0.95 * right - VNear / 2 * 0.95 * up); g.Vertex(camerapos + viewray * nearclip * 1.1 + HNear / 2 * 0.95 * right - VNear / 2 * 0.95 * up); Gl.glEnd(); g.SetMaterialColor(new Color(1, 0, 1)); Gl.glBegin(Gl.GL_LINES); g.Vertex(camerapos + viewray * farclip * 0.95 + HFar / 2 * 0.95 * right + VFar / 2 * 0.9 * up); g.Vertex(camerapos + viewray * farclip * 0.95 - HFar / 2 * 0.95 * right + VFar / 2 * 0.9 * up); Gl.glEnd(); Gl.glBegin(Gl.GL_LINES); g.Vertex(camerapos + viewray * farclip * 0.95 - HFar / 2 * 0.95 * right - VFar / 2 * 0.9 * up); g.Vertex(camerapos + viewray * farclip * 0.95 + HFar / 2 * 0.95 * right - VFar / 2 * 0.9 * up); Gl.glEnd(); /* * g.SetMaterialColor(new Color(1, 0, 0)); * Gl.glBegin(Gl.GL_LINES); * g.Vertex(viewray * 10); * g.Vertex(viewray * 100); * Gl.glEnd(); * * g.SetMaterialColor(new Color(0, 1, 0)); * Gl.glBegin(Gl.GL_LINES); * g.Vertex(viewray * 10); * g.Vertex(viewray * 10 + right * 100); * Gl.glEnd(); * * g.SetMaterialColor(new Color(0, 0, 1)); * Gl.glBegin(Gl.GL_LINES); * g.Vertex(viewray * 10); * g.Vertex(viewray * 10 + up * 100); * Gl.glEnd(); * * g.SetMaterialColor(new Color(0, 1, 1)); * for (int i = 0; i < 6; i++) * { * Gl.glBegin(Gl.GL_LINES); * g.Vertex(planes[i].point + viewray * 100); * g.Vertex(planes[i].point + planes[i].normalizednormal * 100 + viewray * 100); * Gl.glEnd(); * } */ //Console.WriteLine( camerapos + " " + viewray ); //Console.WriteLine( IsInsideFrustum( camerapos + viewray * nearclip * 1.5, 0 ) ); //Console.WriteLine( IsInsideFrustum( camerapos + viewray * farclip * 0.9, 0 ) ); //System.Environment.Exit( 0 ); }