„Számítógépes grafika és képfeldolgozás - Vizsga, 2015.01.06.” változatai közötti eltérés
Új oldal, tartalma: „Amennyiben ki tudjátok egészíteni, vagy hibás számolást találtok nyugodtan változtassátok a cikket. == 1. Feladat == Írjon OpenGL programrészletet, amely az …” |
Nincs szerkesztési összefoglaló |
||
| 8. sor: | 8. sor: | ||
A javasolt OpenGL függvények: glBegin, glEnd, glVertex, glNormal, glTexCoord, glMaterial, glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, ...); | A javasolt OpenGL függvények: glBegin, glEnd, glVertex, glNormal, glTexCoord, glMaterial, glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, ...); | ||
== 2. Feladat == | == 2. Feladat == | ||
Az alábbi programban az eye, lookat, Right és Up a világ-koordinátarendszerbeli kameraparaméterek, jelentésük a nevükből következően értelemszerű. Mit csinál (mit jelenít meg) a program? (3p) Alakítsa át úgy, hogy az sugárkövetéssel egy világ-koordinátarendszerben lévő ellipszoidot jelenítséen meg, amelynek súlypontja (1, 2, 3), főtengelyei a koordinátatengelyekkel párhuzamosak és hosszuk 4, 5, 6. Az ellipszoid diffúz+Blinn típusú, kd=(0.1, 0.1, 0.1), ks=(2,3,4), shininess=200. A teret irányfényforrás világítja meg az (1,2,3) irányból, melynek intenzitása (3,3,3). Jelölje meg azokat a programsorokat, amelyeket változás nélkül felhasználhat és azokat, amelyeket ki kell törölni (3p). Csak az új részeket kell megírni, a sugármetszést és a normálvektort analitikusan kell számolni (14p). | |||
{| class="wikitable" | |||
|- | |||
|Display függvény | |||
|Vertex shader | |||
|Pixel shader | |||
|- | |||
|<pre> | |||
void Display() { | |||
glBegin( GL_QUADS ); | |||
Vector p = lookat-Right+Up; | |||
glTexCoord3f(p.x, p.y, p.z); | |||
glVertex3f(-1, 1, 0); | |||
p = lookat-Right-Up; | |||
glTexCoord3f(p.x, p.y, p.z); | |||
glVertex3f(-1, -1, 0); | |||
p = lookat + Right - Up; | |||
glTexCoord3f(p.x, p.y, p.z); | |||
glVertex3f(1, -1, 0); | |||
p = lookat + Right + Up; | |||
glTexCoord3f(p.x, p.y, p.z); | |||
glVertex3f(1, 1, 0); | |||
glEnd(); | |||
} | |||
</pre> | |||
|<pre> | |||
void main( | |||
in float4 hPosIn : POSITION, | |||
in float3 wPosIn : TEXCOORD0, | |||
out float4 hPosOut: POSITION, | |||
out float3 wPosOut: TEXCOORD0 ) | |||
{ | |||
hPosOut = hPosIn; | |||
wPosOut = wPosIn; | |||
} | |||
</pre> | |||
|X | |||
|} | |||