Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Piste ei ilmesty. sdl. ja. openGL.

Sivun loppuun

vsbs [10.04.2006 12:02:50]

#

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ä :(

rndprogy [10.04.2006 14:41:04]

#

Missä on SDL_Flip(naytto); , joka näyttää piirretyn kuvan? :)

sooda [10.04.2006 15:09:41]

#

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.

vsbs [10.04.2006 15:17:27]

#

Ei näy vieläkää. Pistin siihen sen SDL_UpdateRect(naytto, 0,0,800,600); eikä piste silti ilmesty :(

sooda [10.04.2006 15:25:28]

#

Tarkemmin ajatellen, eiks sdl:lle ja gl:lle pitäisi jotenkin kertoa että ne saisivat tehdä yhteistyötä? Muistaakseni ihan noin ei toimi.

Deewiant [10.04.2006 15:29:36]

#

SDL_OPENGL-flagi piti ainakin heittää SDL_SetVideoMode()-funkkarille.

vsbs [10.04.2006 15:56:07]

#

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ä

Deewiant [10.04.2006 16:30:43]

#

SDL_UpdateRect() sen enempää kuin SDL_Flip() eivät toimi OpenGL:n kera. Käytä sen sijaan proseduuria SDL_GL_SwapBuffers().

vsbs [10.04.2006 16:46:34]

#

Nyt toimii. sain korjattuu sellai et laitoin ton gl swap jutun ja ton sinne koodii sen glClear jutun nyt se toimii


Sivun alkuun

Vastaus

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

Tietoa sivustosta