In FRUSTUM CULLING, we need to extract the view. Is that calculates a cross section? First, we need to understand the plane representation: the mathematical expression of the plane is: AX BY CZ D = 0; if the vector (A, B, C) composed of A, B, C) is equal to the plane of the plane, Then | D | Represents the distance from the origin to this plane. If D> 0, the origin is located on the front of the plane (one side refers to the normal vector); if D <0, the origin is located on the back of the plane; if D = 0, the plane passes through the origin. In this way, it is convenient to represent a plane: an abbreviated marker to indicate a plane that satisfies the point Q in Equation NQ D = 0. Next, how is it calculated as a view section, divided into two cases: 1. The focal length E of the known side is known, the screen is high and wreatle than A, the distance of the myopia cross section, and the distance f of the high-view cross section can pass The following formula is calculated in the flat vector of the camera space: plane near <0, 0, -1, -N> far <0, 0, 1, f> left Right <-E / SQRT (E * E 1), 0, -1 / SQRT (E * E 1), 0> <0, -E / SQRT (E * E A * a), -A / SQRT (E * E A * a), 0> <0, E / SQRT (E * E A * a), -A / SQRT (E * E A * a), 0> This situation is suitable for specifying the projection matrix with GLFRUSTUM (). 2. In other cases, you need to get Projection_Matrix and ModelView_Matrix: Float Proj [16], Modv [16]; GLGETFLOATV (GL_PROAATV (GL_MODELVIEW_MATRIX, MODV); in this case can be divided into two In the case, the first case, modelview_matrix is the unit matrix: the perspective projection matrix is M, and the video section in the camera space is: plane near M4 M3 far M4-M3 left M4 M1 right M1 (1 <= I <= 4) of M4-M2 in M4-m2 represents the first row of the matrix M.