1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #ifndef sw_Polygon_hpp 16 #define sw_Polygon_hpp 17 18 namespace sw { 19 20 struct Polygon 21 { Polygonsw::Polygon22 Polygon(const float4 *P0, const float4 *P1, const float4 *P2) 23 { 24 P[0][0] = P0; 25 P[0][1] = P1; 26 P[0][2] = P2; 27 28 n = 3; 29 i = 0; 30 b = 0; 31 } 32 Polygonsw::Polygon33 Polygon(const float4 *P, int n) 34 { 35 for(int i = 0; i < n; i++) 36 { 37 this->P[0][i] = &P[i]; 38 } 39 40 this->n = n; 41 this->i = 0; 42 this->b = 0; 43 } 44 45 float4 B[16]; // Buffer for clipped vertices 46 const float4 *P[16][16]; // Pointers to clipped polygon's vertices 47 48 int n; // Number of vertices 49 int i; // Level of P to use 50 int b; // Next available new vertex 51 }; 52 53 } // namespace sw 54 55 #endif // sw_Polygon_hpp 56