bmap_rendertarget(BMAP*,var num,var
mode)
Benennt eine Bitmap als Renderziel für alle nachfolgenden Objekte und Views. Derart lassen sich mehrere Renderziele setzen und durch die Pixelshader-Semantik COLOR1...COLORn kann gleichzeitig hineingerendert werden.
Parameter:
BMAP* - Bitmap-Pointer, der als Renderziel verwendet wird oder NULL zum Abschalten des Renderziels. Sämtliche Renderziele müssen dieselbe Größe haben.
num - Render target-Nummer. 1..3 für COLOR1...COLOR3. Um in COLOR0 zu rendern, setzten Sie das Renderziel mittels view.bmap benutzt.
mode - Flächen-Nummer für eine Environment Map als Renderziel: 1=Westen, 2=Norden, 3=Osten, 4=Süden, 5=runter, 6=rauf.
mode - Modus für eine normale Bitmap als Renderziel: 1 = bewahre den vorigen Inhalt, 0 = bewahre den Inhalt nicht. A7.22
Rückgabewerte:
0, wenn die gegebene Renderzielnummer nicht von der Hardware unterstützt wird, ansonsten ungleich Null.
Geschwindigkeit:
Mittel
Edition:
A7.10 C P
Bemerkungen:
- Zum Umschalten von Renderzielen in Abhängigkeit von einem bestimmten View kann die Funktion in einem Material-Event aufgerufen werden.
- Renderziel 0 kann nur dann gesetzt werden, wenn der View kein eigenes Renderziel hat (view.bmap) und läßt sich durch bmap_rendertarget(NULL,0,0) zur Wiederaufnahme des normalen Bildschirmrenderings abschalten.
- Alle gleichzeitig aktiven Renderziele müssen dieselbe Größe und dasselbe Format haben. Wenn Sie Renderziele verschiedener Größen in verschiedenen Views verwenden, sorgen Sie dafür, sie in einem ENABLE_VIEW-Event über bmap_rendertarget an- und abzuschalden, sodass immer nur Renderziele derselben Größe gleichzeitig aktiv sind. Global aktivierte Renderziele, die die ganze Zeit über aktiv bleiben, müssen dieselbe Größe haben wie der Bildschirm.
- Die Himmelsfarbe sky_color betrifft sämtliche Renderziele. Wenn Sie nicht wollen, dass die Renderziele mit Beginn eines jeden View-Renderings geleert werden, setzen Sie diese auf (0,0,0). Alternativ, wenn ein bestimmter View nicht in diese hineinschreiben darf, deaktivieren Sie die Renderziele über einen ENABLE_VIEW-Event .
- Nicht alle 3D-Karten unterstüzen vielfältige Renderziele. Bei denjenigen, die es tun, werden für gewöhnlich vier Ziele unterstützt.
Beispiel (lite-C):
// example for switching view dependent render targets ///////////////////////////////
VIEW* viewTarget = { ... }
PANEL* panTarget1 = { pos_x = 0; bmap = "#200x200x24"; flags = SHOW; } // COLOR1 rendertarget
PANEL* panTarget2 = { pos_x = 200; bmap = "#200x200x24"; flags = SHOW; } // COLOR2 rendertarget
function eventTarget()
{
if (render_view == viewTarget) { // activate COLOR1 and COLOR2 rendertargets for this view only
bmap_rendertarget(panTarget1.bmap,1,0);
bmap_rendertarget(panTarget2.bmap,2,0);
} else {
bmap_rendertarget(NULL,1,0);
bmap_rendertarget(NULL,2,0);
}
}
MATERIAL* mtl_viewevent = {
event = eventTarget;
flags = ENABLE_VIEW;
}
Siehe auch:
view.bmap, bmap_zbuffer, material events, render_view
► Aktuelle Version Online