Hallo Matthias,
ich weiß ja nicht, ob du mit den bisherigen Antworten was anfangen konntest - ich konnte es jedenfalls nicht.
Glücklicherweise habe ich dann doch noch selbst eine Lösung gefunden, die für kleine Bilder ganz gut geeignet ist.
Dazu besorgst du dir aus dem Internet zunächst einmal das MegaPOV-Paket. Da ist eine Kommando-Zeilen-Version dabei, die still und leise im Hintergrund arbeitet. MegaPOV ist mit POVRay fast identisch, enthält nur zusätzliche Features.
Der Aufruf geschieht dann wie folgt
Delphi-Quellcode:
var
StartupInfo:TStartUpInfo;
ProcessInfo:TProcessInformation;
begin
...
FillChar(StartUpInfo,SizeOf(TStartUpInfo),0);
StartUpInfo.cb:=SizeOf(TStartUpInfo);
StartUpInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow:=SW_HIDE;
If CreateProcess(nil,
PChar('megapov +I'+name+'.pov +W'+IntToStr(w)+' +H'+IntToStr(h)+' +A0.3 -D'),
nil,
nil,
false,
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartUpInfo,
ProcessInfo) then begin
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
end;
TGAImage.LoadFromFile(name+'.tga');
...
end;
Sieht nicht schön aus, funktioniert aber. 'name' ist der Name der gewünschten Datei (ohne Extension). 'w' ist die Breite und 'h' die Höhe. MegaPOV erzeugt TGA-Dateien, deshalb brauchst du noch eine
Unit zum Einlesen von TGA-Dateien.
Viel Spaß beim Rendern, em-sigma
Allen ist das Denken erlaubt. Vielen bleibt es erspart. (Curt Goetz)