Pri teste na hlbku chyba zmienka o zisteni nastavenej testovacej funkcii:
glGetIntegerv(
GL_DEPTH_FUNC,
¶ms
);
Pri blendingu vypadli funkcie na zistovanie nastavenej zdrojovej a cielovej funkcie:
glGetIntegerv(
GL_BLEND_SRC,
¶ms
);
glGetIntegerv(
GL_BLEND_DST,
¶ms
);
Pri popise funkcii glReadBuffer() a glDrawBuffer() chyba pri hodnotach GL_FRONT_RIGHT, GL_FRONT_LEFT, GL_BACK_RIGHT, GL_BACK_LEFT poznamka, ze sa mozu pouzit iba pri zapnutom double-bufferingu.
Ak sa sucasne pouzivaju predny, zadny, lavy aj pravy buffer, potom pre funkciu glReadBuffer() definuju hodnoty GL_FRONT, GL_LEFT a GL_FRONT_LEFT vzdy lavy predny buffer, GL_FRONT_RIGHT a GL_RIGHT pravy predny buffer a konecne GL_BACK_LEFT a GL_BACK definuju lavy zadny buffer.
Pri hodnote GL_NONE mala byt menovana funkcia glDrawBuffer().
Pouzivat hodnotu GL_AUX_BUFFERS na zistenie poctu pridavnych bufferov je chyba. Spravne sa ma pouzit funkcia:
glGetIntegerv(
GL_AUX_BUFFERS,
¶ms
);
Dalej mozno doplnit, ze hodnoty konstant GL_AUXi su nastavene tak, aby splnali podmienku:
GL_AUXi = GL_AUX0 + i
Pomaha to pri zjednoduseni kodu programu.
Mimochodom, uvadzat v definiciach hlaviciek funkcii priklady hodnot ich parametrov ma este nikdy nenapadlo :) Zo zaciatku trochu matuce, ale uznavam, setri to miesto.
Dejuji za prispevek,
ja jsem tam nektere funkce (resp. parametry funkci glGet*) uz ani neuvadel, protoze se tato cast neumerne natahovala a snadno se to da nalezt v dokumentaci.
S hodnotou GL_NONE u glDrawBuffer() mate naprostou pravdu, docela zavazna chyba, stejne jako GL_AUX_BUFFERS.
U popisu vyznamu hodnot GL_FRONT_RIGHT, GL_FRONT_LEFT, GL_BACK_RIGHT, GL_BACK_LEFT predpokladam, ze si ctenar pouziti odvodi z GL_FRONT a GL_BACK.
Mimochodem, vy jste nekdy pouzil auxiliary barvove buffery? Kdyz jsem je chtel docela davno pouzit, tak jsem zjistil, ze mnoho implementaci je vubec nepodporuje (pouze predni a zadni barvovy buffer), takze se na ne neda moc spolehat. Bylo to v dobe Windows 98 a akceleratoru prvni a druhe generace (zacinaly GPU).
Podla mne dostupnych zdrojov v Redmond OS nie su OpenGL auxiliary buffery podporovane. Kedze programujem hlavne pod vyssie zmienenym OS, nemal som moznost vyskusat ich v praxi. Vsetky doterajsie pokusy o ich inicializaciu skoncili neuspechom (musim vsak priznat, ze vela ich nebolo). Tiez s prikladmi pouzitia aux. bufferov sa stretavam velmi zriedka, asi prave kvoli tomu, ze na ich existenciu sa neda spolahnut.
Ja pouzivam nejenom OS z Redmontu, ale i Unixove systemy. Na grafiku jsem pouzival zejmena SGI Octane, ktery je sice zastaraly, ale zase ho povazuji z hlediska OpenGL za jakousi referencni platformu.
Je ale zajimave, ze auxiliary barevne buffery nefungovaly na wenckach ani pri pouziti SW implementace od SGI.