k_argo Posted October 20, 2010 Report Share Posted October 20, 2010 A wiec pisze sobie programik, danymi wejsciowymi jest lista graczy zapisana w tablicy (X, Y, Name) i szukam najbardziej optymalnego sposobu wyswietlenia mapki na ktorej zostana wyswietlone pozycje tych graczy, cos pod ten styl: Aha, dodam ze wspolrzedne beda sie zmieniac w kazdej sekundzie, a graczy czasami bedzie ponad 100 wiec canvas mi odpada z taka czestotliwoscia odswiezania. Link to comment Share on other sites More sharing options...
Toster Posted October 21, 2010 Report Share Posted October 21, 2010 dx, ogl recznie lub przez jakis engine, np omega, bengine, asphyre, sdl. 100 spritow to nie problem karta graficzna nawet nie zauwazy 100 spritow. Always Dark<br /> Link to comment Share on other sites More sharing options...
k_argo Posted October 21, 2010 Author Report Share Posted October 21, 2010 No wiec zaczalem przygode w OpenGL, jestem zielony w tym jeszcze:D Ale poszukalem troche info na ten temat i chcialbym sobie zrobic rotacje kamery, mam taka procedure: procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var XRot, YRot : Integer; begin if MBL then begin XRot := 1; YRot := 1; glMatrixMode(GL_PROJECTION); if LX > X then XRot := -1; if LY > Y then YRot := -1; glRotatef(Y*0.01, YRot, 0, 0); glRotatef(X*0.01, 0, XRot, 0); glMatrixMode(GL_MODELVIEW); LX := X; LY := Y; end; end; Wszystko ladnie pieknie kiedy np przesuwam myszke tylko po osi Y lub X, ale jak zaczynam mieszac to na poczatku jest ok, ale kilka ruchow myszka i sie rypie, nie dziala tak jak powinno:/ Link to comment Share on other sites More sharing options...
Adam27 Posted October 21, 2010 Report Share Posted October 21, 2010 Do obsługi kamery używa się funkcji gluLookAt, poszukaj na forum tematu, podawałem kiedyś kod obracający i przesuwający kamerę. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
k_argo Posted October 21, 2010 Author Report Share Posted October 21, 2010 Dzieki, dziala:) if MBL then begin if ClickY < Y then if LY > Y then begin if K2>0 then k2 := k2-1; end else if K2<90 then k2 := k2+1; if ClickY > Y then if LY < Y then begin if K2<90 then k2 := k2+1; end else if K2>0 then k2 := k2-1; if ClickX > X then if LX < X then k := k+1 else k := k-1; if ClickX < X then if LX > X then k := k-1 else k := k+1; LX := X; LY := Y; end;łĘWŚ~r8śŚźvZ)^ąŚ(ą1Ą ĄQIĄ,= ĄQIĄ,A`MĄQIĄ,=ŹMĄQIĄ,= ĄQIĄ,AhA`Ah( Link to comment Share on other sites More sharing options...
5corpio Posted October 22, 2010 Report Share Posted October 22, 2010 Do obsługi kamery używa się funkcji gluLookAt Kompletnie bez różnicy... i tak wszystko ostatecznie będzie przekształcaniem macierzy. A gluLookAt robi praktycznie to samo co jak ręcznie realizujesz obroty i przesunięcia etc. Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link to comment Share on other sites More sharing options...
Adam27 Posted October 22, 2010 Report Share Posted October 22, 2010 Być może, ale jest szybciej, łatwiej i bardziej intuicyjnie użyć jednej funkcji, która ustawia wszystko od razu, niż bawić się obrotami i przesuwaniem ręcznie. Takie jest przynajmniej moje zdanie. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
k_argo Posted October 22, 2010 Author Report Share Posted October 22, 2010 Mam troche inny problem, mianowicie wspolrzedne w 3 wymiarach na podstawie wspolrzednych kursora. Widzialem tu podobny temat tyle ze na Directx, a nie OpenGL. Znalazlem na necie takowa funkcje : function GetOGLPos(X, Y: Integer): T3D_Point; var viewport: array [1..4] of Integer; modelview: array [1..16] of Double; projection: array [1..16] of Double; winZ: Single; begin glGetDoublev( GL_MODELVIEW_MATRIX, @modelview ); glGetDoublev( GL_PROJECTION_MATRIX, @projection ); glGetIntegerv( GL_VIEWPORT, @viewport ); // In Delphi A Y Value Of 0 Returns An Unknown Value // I Discovered This While I Was Testing A Crosshair if( Y = 0 )then Y := 1; glReadPixels( X, -Y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @winZ ); gluUnProject( X, viewport[4]-Y, winZ, @modelview, @projection, @viewport, Result[1], Result[2], Result[3]); end; Tyle ze nie zwraca mi prawidlowych wspolrzednych. Jesli ktos ma chwilke czasu to tu jest zrodlo: Program Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.