NewRGBCoonsPatchMesh

Sombreado, Gráficos

Descripción

Crea un sombreado de malla de parches de Coons, tipo 6 de sombreado PDF, y lo registra bajo ShaderName en color DeviceRGB. Cada parche lleva doce puntos de control, las cuatro esquinas del parche más dos puntos de control por arista, en el orden P1..P12 (esquinas en P1, P4, P7, P10) más un color por esquina. Los parches se emiten de forma independiente, sin compartir aristas

Sintaxis

Delphi

Function TPDFlib.NewRGBCoonsPatchMesh(Const ShaderName: WideString;
  Const Patches: Array Of TPLMeshPatchCorners;
  BitsPerCoordinate, BitsPerComponent: Integer;
  Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;

Parámetros

ShaderNameNombre bajo el que se registra el sombreador; páselo a SetFillShader o SetLineShader para pintar con la malla
PatchesMatriz de registros TPLMeshPatchCorners; PX/PY contienen las coordenadas de los puntos de control en las ranuras 0..11 correspondientes a P1..P12, y CR/CG/CB contienen los cuatro colores de esquina en el intervalo de 0 a 1
BitsPerCoordinateBits de cuantización para las coordenadas de los puntos de control, entre 1 y 32
BitsPerComponentBits de cuantización por componente de color, entre 1 y 16
BoundsX0, BoundsY0, BoundsX1, BoundsY1Rectángulo de descodificación que asigna las coordenadas empaquetadas de los puntos de control al espacio de coordenadas del sombreado

Valores devueltos

0La malla no se creó, porque no hay documento seleccionado, la matriz de parches está vacía o un parámetro de bits está fuera de rango
1La malla quedó registrada bajo ShaderName

Comentarios

Las coordenadas siguen el sistema de origen arriba a la izquierda de la biblioteca y se traducen internamente (ISO 32000-1 §8.7.4.5.7). Para parches con puntos de control interiores, véase NewRGBTensorPatchMesh

Ejemplo

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
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.NewRGBCoonsPatchMesh('patch', Patches, 16, 8,
  100, 100, 300, 250);
PDF.SetFillShader('patch');