Kezdőoldal » Számítástechnika » Programozás » OpenGL-ben hogy lehet ezt...

OpenGL-ben hogy lehet ezt megoldani?

Figyelt kérdés
Sziasztok! OpenGL-ben létrehozok egy 250X250-es ablakot. Abban egy 1 egység méretü forgó kockát origó középponttal. Mikor ezt az ablakot kinagyítom maximális méretre, akkor az objektum forgása lelassúl, és a bal alsó sarokba kerűl. Gondoltam arra hogy létrehozok egy olyan függvényt, ami méri hogy hányszorosára nőtt vagy csökkent az ablak, és úgy "normalizálja" a forgási értéket meg az objektum helyét. Szerintetek ez működne? Amúgy bármilyen más tanácsra is vevő vagyok. Köszönöm a válaszokat előre is. :)

2017. aug. 17. 13:56
 1/6 A kérdező kommentje:
Annyit megjegyeznék hogy C++ alatt glfw3-al, ablakozom az OpenGL-t. De SDL alatt is gyakorlom amiket glfw alatt csinálok.
2017. aug. 17. 13:58
 2/6 A kérdező kommentje:
Neg annyi hogy ha "megfogom" az ablak felső részét, kkor megáll a program. De erre ötletem sincs hogy lehetmne kiküszöbölni.
2017. aug. 17. 14:49
 3/6 sharkxxx ***** válasza:
91%

Mivel nem mutattál semmi forráskódot így csak találgatni lehet, hogy milyen parancsokat írhattál, milyen parancsokat nem írhattál.


Lehet hogy azért kerül a bal alsó sarokba a kocka, mert nem használtad ezeket a parancsokat:

glViewport()

gluPerspective()


Lehet hogy azért lassul le a kocka forgása, mert rossz eseménybe tetted a képkocka frissítéseket. A képkocka frissítéseket akkor kell végrhajtani, amikor a PeekMessage() parancs FALSE-t add vissza.


Ahoz hogy ne álljon meg a program, ha megfogod az ablak felső részét, ahoz használnod kell egy másik thread-et. Abban a másik threadben kell kiszámolnod a kocka elforgatási szögét.

2017. aug. 17. 16:03
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
33%

"...az ablakot kinagyítom..."


Le is írtad, hogy mit csináltál! Azaz, amikor az ablakot méretezed, akkor be kell állítani ezt az eseményt (pl. glutReshapeFunc)...


[link]


...és így már a kockád a megfelelő helyen lesz!



"...akkor az objektum forgása lelassul..."


Nos minél nagyobb méretben nézed az animációt, annál nagyobb kockát kell megforgatni, vagyis lehet, hogy nem eléggé gyors a számítógéped!



"...ha megfogom az ablak felső részét..."


Ez függhet az operációs rendszertől is, hogy az hogyan kezeli az ablakokat, de lehet, hogy nem megfelelően írtad meg a programodat.


[link]

2017. aug. 17. 17:17
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
a forgás ügyében nem lehet az, hogy te nem az eltelt idő függvényében forgatsz, hanem mindig egységnyit, a lassulás pedig azért lehet, mert 250x250 felbontáson gyorsabban rajzol, mint nagyobb felbontáson?
2017. aug. 17. 20:53
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
vagyis pl legyen egy sebességed, mondjuk szögsebesség, minden egyes függvényhíváskor (amelyik a forgatást végzi) számolj egy dt-t (az előző függvényhívás óta eltelt időt), majd a tényleges forgatás dt*sebesség legyen, így lassabb gépen is ugyan annyit fog forogni a kocka egy másodperc alatt, legfeljebb akadni fog (alacsony fps) a gyenge gép miatt.
2017. aug. 17. 20:58
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!