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

ShaderNameNazwa rejestrowanego cieniowania; przekaż ją do SetFillShader lub SetLineShader, aby malować siatką
VerticesTablica 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
BitsPerCoordinateLiczba bitów kwantyzacji współrzędnych wierzchołków, od 1 do 32
BitsPerComponentLiczba bitów kwantyzacji na składnik koloru, od 1 do 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Prostokąt dekodowania odwzorowujący spakowane współrzędne wierzchołków na przestrzeń współrzędnych cieniowania

Wartości zwracane

0Siatka 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
1Siatkę 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');