Version 1, last updated by FrederikDM at October 22, 2008 22:27 UTC
o We weten dat elk zichtbaar object een shader inlaadt. Bij het renderen van de scene wordt dus telkens van effect gewisseld. Dit duurt een tijd, en willen we voorkomen. Hoe voorkomt het framework dit?
Er wordt in BuildEffect() eerst gecontroleerd of de shader al ingeladen is. De shader moet dus maar één keer ingeladen worden, daarna wordt dit overgeslagen.
o In een effect kunnen verschillende techniques aanwezig zijn. Hoe worden die techniques in het framework bijgehouden?
In een map: map<tstring,D3DXHANDLE>.
o Hoe werkt de method SetDefaultTechnique in de klasse PosNormShader ?
De map wordt vanaf het begin afgelopen, de eerste technique die de iterator tegenkomt wordt ingesteld als standaard.
o De shader heeft een lichtkleur en richting nodig. Zoek de declaratie, en hoe het licht uiteindelijk in de shader terecht komt.
In de Shader klasse worden D3DXHANDLES gemaakt om Material en Light structs aan door te geven. Ze worden ingevuld met Set functies (vanuit het object) en geven ze door aan D3DX met SetValue.
o De shader file heeft een aantal matrices nodig. Beschrijf hoe en waar die worden berekend. Waar worden de View- en Projection matrix bijgehouden? Waarom zijn die als static gedeclareerd? Waar worden ze berekend?
De nodige matrices zijn World, WorldViewProj, WorldInvTrans. De World-matrix wordt berekend in TreeElement. De View en Projection matrix staan static in TreeD3Dobject, omdat alle objecten hiervan overerven en natuurlijk in eenzelfde zichtsveld en perspectief staan. Ze worden ingevuld in de basis .cpp van de applicatie.
Er wordt in BuildEffect() eerst gecontroleerd of de shader al ingeladen is. De shader moet dus maar één keer ingeladen worden, daarna wordt dit overgeslagen.
o In een effect kunnen verschillende techniques aanwezig zijn. Hoe worden die techniques in het framework bijgehouden?
In een map: map<tstring,D3DXHANDLE>.
o Hoe werkt de method SetDefaultTechnique in de klasse PosNormShader ?
De map wordt vanaf het begin afgelopen, de eerste technique die de iterator tegenkomt wordt ingesteld als standaard.
o De shader heeft een lichtkleur en richting nodig. Zoek de declaratie, en hoe het licht uiteindelijk in de shader terecht komt.
In de Shader klasse worden D3DXHANDLES gemaakt om Material en Light structs aan door te geven. Ze worden ingevuld met Set functies (vanuit het object) en geven ze door aan D3DX met SetValue.
o De shader file heeft een aantal matrices nodig. Beschrijf hoe en waar die worden berekend. Waar worden de View- en Projection matrix bijgehouden? Waarom zijn die als static gedeclareerd? Waar worden ze berekend?
De nodige matrices zijn World, WorldViewProj, WorldInvTrans. De World-matrix wordt berekend in TreeElement. De View en Projection matrix staan static in TreeD3Dobject, omdat alle objecten hiervan overerven en natuurlijk in eenzelfde zichtsveld en perspectief staan. Ze worden ingevuld in de basis .cpp van de applicatie.