Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: OpenGL syvyys(z) ei toimi

Kray [07.01.2008 15:18:47]

#

OpenGl:ää väännän SDL:n kanssa, ja syvyys "ei toimi". Nimittäin kun esim. piirrän neliön muotoisen polygonin, niin jos sen verteksien z-arvo on yli 1 tai alle -1, niin polygon "katoaa". Sama juttu translaten kanssa. Mikä mahtaisi olla pielessä? Olenko asettanut/jättänyt asettamatta asetuksen, joka aiheuttaisi sen? Täsää mitä olen asettanut:

SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 32);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
glViewport(0, 0, (GLsizei) screen.width, (GLsizei) screen.height);
glMatrixMode(GL_PROJECTION);
gluPerspective(60, 800.0/600.0, 1, 100);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
screen.screen=SDL_SetVideoMode(screen.width, screen.height, screen.colordebth, SDL_OPENGL|SDL_GL_DOUBLEBUFFER|SDL_HWPALETTE|SDL_HWSURFACE);

Edit:Lisäksi kohdan syvyyden muuttaminen ei vaikuta palikan sijaintiin.

Metabolix [07.01.2008 16:11:50]

#

SDL_GL_DOUBLEBUFFER ei kuulu SDL_SetVideoMode-funktion lippuihin, sitä käytetään vain GL-parametrien asettamisessa. Se voi siis tuolla tavalla saada periaatteessa aikaan ties mitä kummia SDL:n puolella. Muillakaan noista lipuista ei luultavasti ole mitään merkitystä, kun OpenGL on käytössä. Olet myös kirjoittanut väärin: ei "colordebth" vaan "colordepth".

Eipä tuossa muuta erityistä vikaa näy. Kummalliselta kuulostaa kyllä, koska noiden asetusten mukaan vain välillä 1–100 olevien asioiden pitäisi näkyä. Kokeilepa vielä kutsua glLoadIdentity-funktiota kummankin glMatrixModen jälkeen ja asettaa glDepthFunc(GL_LESS) ja glClearDepth(1.0) ja tarkista, että glClear-funktiolle on annettu myös GL_DEPTH_BUFFER_BIT.

Kray [07.01.2008 17:15:25]

#

Kiitos avusta, nyt toimii. :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta