NewRGBTensorPatchMesh
Gölgelendirme, Grafikler
Açıklama
Bir tensör çarpım yama ağı gölgelendirmesi (PDF 7. gölgelendirme türü) oluşturur ve onu ShaderName adıyla DeviceRGB renginde kaydeder. Her yama, P1..P16 sırasıyla dört yama köşesi, sekiz kenar kontrol noktası ve dört iç kontrol noktası olan on altı kontrol noktası ve köşe başına bir renk taşır. Yamalar kenar paylaşımı olmadan bağımsız olarak yazılır
Sözdizimi
Delphi
Function TPDFlib.NewRGBTensorPatchMesh(Const ShaderName: WideString;
Const Patches: Array Of TPLMeshPatchCorners;
BitsPerCoordinate, BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;Parametreler
| ShaderName | Gölgelendiricinin kaydedildiği ad; ağla boyamak için onu SetFillShader veya SetLineShader'a geçin |
|---|---|
| Patches | TPLMeshPatchCorners kayıtlarından oluşan dizi; PX/PY kontrol noktası koordinatlarını P1..P16 yuvaları olan 0..15 konumlarında tutar — iç kontrol noktaları P13..P16, 12..15 konumlarındadır — ve CR/CG/CB dört köşe rengini 0 ile 1 aralığında tutar |
| BitsPerCoordinate | Kontrol noktası koordinatları için nicemleme bitleri, 1 ile 32 arasında |
| BitsPerComponent | Renk bileşeni başına nicemleme bitleri, 1 ile 16 arasında |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | Paketlenmiş kontrol noktası koordinatlarını gölgelendirme koordinat uzayına eşleyen kod çözme dikdörtgeni |
Dönüş değerleri
| 0 | Ağ oluşturulamadı; çünkü hiçbir belge seçili değil, yama dizisi boş veya bir bit parametresi aralık dışında |
|---|---|
| 1 | Ağ ShaderName adıyla kaydedildi |
Açıklamalar
Koordinatlar kitaplığın sol üst kökenli sistemini izler ve içeride çevrilir (ISO 32000-1 §8.7.4.5.8). İç kontrol noktaları, bir yamanın içindeki renk akışı üzerinde NewRGBCoonsPatchMesh'in çift kübik sınır eğrilerinden daha ince denetim sağlar
Örnek
Patch:= Default(TPLMeshPatchCorners);
Patch.PX[0]:= 100; Patch.PY[0]:= 100; // P1 corner
Patch.PX[3]:= 300; Patch.PY[3]:= 100; // P4 corner
Patch.PX[6]:= 300; Patch.PY[6]:= 250; // P7 corner
Patch.PX[9]:= 100; Patch.PY[9]:= 250; // P10 corner
// Inner control points P13..P16 in slots 12..15
Patch.PX[12]:= 166; Patch.PY[12]:= 150;
Patch.PX[13]:= 233; Patch.PY[13]:= 150;
Patch.PX[14]:= 233; Patch.PY[14]:= 200;
Patch.PX[15]:= 166; Patch.PY[15]:= 200;
Patch.CR[0]:= 1; Patch.CG[0]:= 0; Patch.CB[0]:= 0;
Patch.CR[1]:= 0; Patch.CG[1]:= 0; Patch.CB[1]:= 1;
Patch.CR[2]:= 0; Patch.CG[2]:= 1; Patch.CB[2]:= 0;
Patch.CR[3]:= 1; Patch.CG[3]:= 1; Patch.CB[3]:= 0;
SetLength(Patches, 1);
Patches[0]:= Patch;
PDF.NewRGBTensorPatchMesh('tensor', Patches, 16, 8,
100, 100, 300, 250);
PDF.SetFillShader('tensor');