NewRGBFreeFormTriangleMesh
Cieniowanie, Grafika
Opis
Tworzy swobodną siatkę trójkątów cieniowanych metodą Gourauda, typ cieniowania PDF 4, i rejestruje ją pod nazwą ShaderName w kolorze DeviceRGB. Wierzchołki są pobierane grupami po trzy, a każda grupa opisuje jeden trójkąt, którego kolory narożników są interpolowane na powierzchni. Każdy trójkąt jest emitowany niezależnie z flagą wierzchołka początkowego, dlatego współdzielenie krawędzi między trójkątami nie jest wymagane
Składnia
Delphi
Function TPDFlib.NewRGBFreeFormTriangleMesh(Const ShaderName: WideString;
Const Vertices: Array Of TPLMeshVertex; BitsPerCoordinate,
BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;Parametry
| ShaderName | Nazwa rejestrowanego cieniowania; przekaż ją do SetFillShader lub SetLineShader, aby malować siatką |
|---|---|
| Vertices | Tablica rekordów TPLMeshVertex (X, Y, R, G, B) ze składnikami kolorów w zakresie od 0 do 1; długość musi wynosić co najmniej 3 i być wielokrotnością 3 |
| BitsPerCoordinate | Liczba bitów kwantyzacji współrzędnych wierzchołków, od 1 do 32 |
| BitsPerComponent | Liczba bitów kwantyzacji na składnik koloru, od 1 do 16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Prostokąt dekodowania odwzorowujący spakowane współrzędne wierzchołków na przestrzeń współrzędnych cieniowania |
Wartości zwracane
| 0 | Siatka nie została utworzona, ponieważ nie wybrano dokumentu, podano mniej niż jeden pełny trójkąt albo parametr liczby bitów jest poza zakresem |
|---|---|
| 1 | Siatkę zarejestrowano pod nazwą ShaderName |
Uwagi
Współrzędne są zgodne z układem biblioteki o początku w lewym górnym rogu i są wewnętrznie przekształcane (ISO 32000-1 §8.7.4.5.5). Informacje o cieniowaniach gradientowych bez danych wierzchołków zawiera NewRGBAxialShader
Przykład
SetLength(Vertices, 3);
Vertices[0].X:= 100; Vertices[0].Y:= 100;
Vertices[0].R:= 1; Vertices[0].G:= 0; Vertices[0].B:= 0;
Vertices[1].X:= 400; Vertices[1].Y:= 100;
Vertices[1].R:= 0; Vertices[1].G:= 1; Vertices[1].B:= 0;
Vertices[2].X:= 250; Vertices[2].Y:= 350;
Vertices[2].R:= 0; Vertices[2].G:= 0; Vertices[2].B:= 1;
PDF.NewRGBFreeFormTriangleMesh('tri', Vertices, 16, 8,
100, 100, 400, 350);
PDF.SetFillShader('tri');