lrac Napisano Luty 7, 2006 Zgłoś Share Napisano Luty 7, 2006 Witam,mam taki problem mały, gdy pisałem z użyciem glaux, wszystko ładnie działało, ale gdy zarzuciłem do SDL'a to już nie bardzo.Najpierw dam kawałek kodu (w sumie to cały) a potem wyjaśnie.Pascal#include <SDL/SDL.h>#include <gl/gl.h>int main(int argc, char *argv[]){SDL_Event klawisz;int stop = 0;SDL_Init(SDL_INIT_VIDEO);SDL_SetVideoMode(500, 500, 0, SDL_OPENGL | SDL_OPENGLBLIT | SDL_HWSURFACE);SDL_WM_SetCaption ("jakis progz", NULL); glClearColor(0.0f, 0.0f, 0.0f, 0.0f);glClear(GL_COLOR_BUFFER_BIT); glViewport(0, 0, 500, 500); glOrtho(0.0f, 500.0f, 0.0f, 500.0f, 0.0f, 0.0f); while(!stop){glLoadIdentity(); glBegin(GL_POINTS);glColor3f(1.0f, 1.0f, 0.0f); glVertex2i(0, 0);glEnd(); SDL_GL_SwapBuffers();SDL_PollEvent(&klawisz); if(klawisz.key.keysym.sym == SDLK_ESCAPE)stop = 1;}SDL_Quit(); return 0;} 1. No więc tak, najpierw inicjalizuje SDL'a itp.2. Czyszcze okno, Viewport ustawia mi widok na całe okno, Ortho ustawia mi bryłe obcinania.3. Petla czeka na ESC, LoadIdentity zeruje układ współrzędnych.4. Rysuje punkt (GL_POINTS) w układzie (x=0, y=0)I on sie ładnie rysuje tylko że na samym środku okna, jak dam inne współrzędne niż 0,0 to się wcale nie rysuje.Niby mam ustawiony widok i obcinanie a mimo to się rysuje na środku, i tylko gdy jest 0,0.Gdy próbowałem narysować kwadrat (glRectf()) to rysował się od srodka aż do końca krawędzi okna, nawet gdy miał mieć tylko kilka px, to kończył się na górnej i prawej krawędzi okna od środka.No i tu moje pytanie, co właściwie jest nie tak, bo wg mnie powinno działać wszystko. A nie wiem czy robie coś źle z OGL czy SDL. Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Luty 8, 2006 Zgłoś Share Napisano Luty 8, 2006 dodaj glu.hi tam gdzie jest Viewport i glOrtho daj:Pascal gluOrtho2D(0,500,500,0);glViewport (0, 0, 500, 500);bo jest: [quote] glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); [/quote]A ten zapis gluOrtho2D to niemalże na żywca z mojego projektu więc możesz też użyć glOrtho, tylko żeby Top było 0, a Bottom 500 i powinno być dobrze, jeśli nie to, to w SetVideoMode może trzeba coś zmienić :>Na razie sprawdź to Jeśli pomogło Ci to, to daj mi "Pomógł " Link do komentarza Udostępnij na innych stronach More sharing options...
lrac Napisano Luty 8, 2006 Autor Zgłoś Share Napisano Luty 8, 2006 Hmm, to nie przez to chyba.Już wiem czemu nie można było ustawic punktu w innym miejscu, bo próbowałem zawsze 1.0f, a 1.0 to granica okna - chodzi o to że jakie by okno nie było duże to 1.0 to odległość od środka do krawędzi, jak ustawiłem 0.1f to działa tylko że odległość 0,1 jest troche za duża.Próbowałem też w sdl'u ustawić powierzchnie SDL_Surface * ale też nie bardzo pomaga. Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Luty 8, 2006 Zgłoś Share Napisano Luty 8, 2006 to nie możesz skorzystać z przeształcenia np. glTranslatef(x,y,z) ? i "oddalisz" widok. Ewentualnie możesz wstawić kamerę.CYTATnawet gdy miał mieć tylko kilka px eee parametry podawane przecież we wszystkich funkcjach np. glVertex3f() nie są przecież wyrażane w pixelach. [quote] Rysuje punkt (GL_POINTS) w układzie (x=0, y=0) I on sie ładnie rysuje tylko że na samym środku okna [/quote].Przy nie zmienianiu niczego środek układu jest w środku okna chyba nie ? Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.