Hallo,
Ik ben op dit moment aan het afstuderen. Ik doe onderzoek naar de invloed van diepte perceptie op kleur perceptie. Hiervoor gebruik ik OpenGL shaders die er voor zorgen dat de kleuren die ik genereer zich aan een bepaald kleur model houden.
Vanuit een experimenteel oogpunt wil ik nu een deel van de scene met diepte en zonder diepte perceptie kunnen genereren. Hiervoor gebruik ik de stencil buffer. Het probleem is nu wanneer ik het programma thuis draai op mijn eigen pc (ATI 9800 pro), hij alle stencil operaties gewoon doet. Maar wanneer ik het programma op de experiment PC draai (geforce fx5970 LE), hij alle stencil operaties negeert en over elkaar heen tekent.
Het programma draait onder windows. Ik heb gekeken naar verschillende stencil en buffer formats die de kaart aankan, maar een stencil buffer van 1 bit zou wel mogelijk moeten zijn.
Hier een deel van de code
Ik ben op dit moment aan het afstuderen. Ik doe onderzoek naar de invloed van diepte perceptie op kleur perceptie. Hiervoor gebruik ik OpenGL shaders die er voor zorgen dat de kleuren die ik genereer zich aan een bepaald kleur model houden.
Vanuit een experimenteel oogpunt wil ik nu een deel van de scene met diepte en zonder diepte perceptie kunnen genereren. Hiervoor gebruik ik de stencil buffer. Het probleem is nu wanneer ik het programma thuis draai op mijn eigen pc (ATI 9800 pro), hij alle stencil operaties gewoon doet. Maar wanneer ik het programma op de experiment PC draai (geforce fx5970 LE), hij alle stencil operaties negeert en over elkaar heen tekent.
Het programma draait onder windows. Ik heb gekeken naar verschillende stencil en buffer formats die de kaart aankan, maar een stencil buffer van 1 bit zou wel mogelijk moeten zijn.
Hier een deel van de code
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| setCurrentShader(1); useShaders(); glDisable(GL_DEPTH_TEST); glStencilMask(~0); glClear(GL_STENCIL_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glEnable(GL_STENCIL_TEST); glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); glStencilFunc(GL_ALWAYS, 1, 1); <teken rectangular waar monoculair deel van scene kom> glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glEnable(GL_DEPTH_TEST); glStencilFunc(GL_NOTEQUAL, 1, 1); /* met diepte perceptie */ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glPushMatrix(); drawLighting(); drawModels(); glPopMatrix(); glStencilFunc(GL_EQUAL, 1, 1); /* zonder diepte perceptie */ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glPushMatrix(); glRotatef(angleRot,0.0,1.0,0.0); drawLighting(); drawModels(); glPopMatrix(); glDisable(GL_STENCIL_TEST); |
[ Voor 3% gewijzigd door .oisyn op 08-07-2005 14:40 ]