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 #include "Vertex.hpp" 19 20 namespace sw 21 { 22 struct Polygon 23 { 24 Polygon(const float4 *P0, const float4 *P1, const float4 *P2) 25 { 26 P[0][0] = P0; 27 P[0][1] = P1; 28 P[0][2] = P2; 29 30 n = 3; 31 i = 0; 32 b = 0; 33 } 34 35 Polygon(const float4 *P, int n) 36 { 37 for(int i = 0; i < n; i++) 38 { 39 this->P[0][i] = &P[i]; 40 } 41 42 this->n = n; 43 this->i = 0; 44 this->b = 0; 45 } 46 47 float4 B[16]; // Buffer for clipped vertices 48 const float4 *P[16][16]; // Pointers to clipped polygon's vertices 49 50 int n; // Number of vertices 51 int i; // Level of P to use 52 int b; // Next available new vertex 53 }; 54 } 55 56 #endif // sw_Polygon_hpp 57