Eli piste ei siis vaan ilmesty. Käytän Dev c++ ohjelmaa eli mingw:iä tai jotai tommost. kieli c ja rajapinta(tjsp.)openGL.
#include <GL.H> #include <glu.h> #include <SDL.H> //sisällytetää sdl.h #define LEVEYS 800 #define KORKEUS 600 //vakiot ikkunan kokoon int main(int argc,char *argv[]) { //tää on se main mist ohjelma alkaa SDL_Surface *naytto; //nayttopinta SDL_Event t; //Tapahtuma if(SDL_Init(SDL_INIT_VIDEO) < 0) //Jos palauttaa pienemmän ku 0:n ni epäonnistuu { //Alustetaa sdl:n video tila fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError()); return 0; //^Jos epäonnistuuu tungetaa virheestä tiedot tiedostoo } naytto = SDL_SetVideoMode(LEVEYS,KORKEUS,32,SDL_HWSURFACE); if(naytto == NULL) { fprintf(stderr,"Resoluution asetus epäonnistui, sörkke sör, %s\n",SDL_GetError()); SDL_Quit(); return 0; } SDL_WM_SetCaption("Missä piste?",NULL); //Eliminoidaan tylsä SDL app Uint8* nappi; nappi = SDL_GetKeyState(NULL); //Nappien tutkimista varte //Alustus////// glViewport(0,0,LEVEYS,KORKEUS); glMatrixMode(GL_PROJECTION); gluOrtho2D(-13,13,-10,10); while(1) { SDL_PollEvent(&t); if(nappi[SDLK_ESCAPE]) { break; } if(t.type == SDL_QUIT) { break; } glBegin(GL_POINTS); glVertex2f(-5,-5); glEnd(); } SDL_Quit(); return 0; }
siin on koodi.
Eli siis kun ton ajaa siinä näkyy vaan musta tausta. Ei pistettä :(
Missä on SDL_Flip(naytto); , joka näyttää piirretyn kuvan? :)
Tollasta mitään flipata tartte, rndprogy, kun ei ole tuplapufferiflagia päällä. Mutta kannattaa kutsua SDL_UpdateRectiä (void SDL_UpdateRect(SDL_Surface *screen, Sint32 x, Sint32 y, Sint32 w, Sint32 h);
) niin näkyy näytölläki kuva.
Ei näy vieläkää. Pistin siihen sen SDL_UpdateRect(naytto, 0,0,800,600); eikä piste silti ilmesty :(
Tarkemmin ajatellen, eiks sdl:lle ja gl:lle pitäisi jotenkin kertoa että ne saisivat tehdä yhteistyötä? Muistaakseni ihan noin ei toimi.
SDL_OPENGL-flagi piti ainakin heittää SDL_SetVideoMode()-funkkarille.
Pistin nyt sen sinne sen opengl lipun, mut nyt se vaan vilahtaa siin ruudus, siis siin ei oo pistettä vaan siinä näkyy se niinku tausta mikä siä takan on... ja jos otan pois sen update rekin ni sit se ei vilahda vaan jaa näkyy siihe ilman pistettä
SDL_UpdateRect() sen enempää kuin SDL_Flip() eivät toimi OpenGL:n kera. Käytä sen sijaan proseduuria SDL_GL_SwapBuffers().
Nyt toimii. sain korjattuu sellai et laitoin ton gl swap jutun ja ton sinne koodii sen glClear jutun nyt se toimii
Aihe on jo aika vanha, joten et voi enää vastata siihen.