|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 28.08.2011, 16:51 Titel: 3D Objekt Fehler |
|
|
Hi Leute,
ich weiß nich ob ich ne antwort bekomm, hier is ja nicht mehr so viel los...
zum Problem:
Game: Ego-Ansicht, bewege mich mit WASD und Maus
Wenn ich in mein Game viele 3d Objekte einbinde kann ich mich mit meiner Maus nicht mehr drehen oder sonstiges.
Jedoch kann ich mich mit den Tasten noch ohne Probleme bewegen und die Framerate ist konstant auf 60.
Dieses Problem tritt aber nicht nur auf wenn ich viele Objekte einbinde, sondern es reicht auch ein Objekt mit vielen Vertices einbinde.
Achja, damit das ganze mit dem drehen auch funktioniert stelle ich die MausPosition immer auf SCREEN_X / 2 , also die mitte. Wenn ich dies nicht mache muss ich zwar die Maus sehr still halten, aber das drehen funktioniert ohne Probleme egal wieviel Objekte da sind.
(Wenn ihr Code braucht bitte melden, aber vielleicht kennt ihr das Problem ja)
GRuß Robin |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 28.08.2011, 21:01 Titel: |
|
|
Brauche Code...
Läuft das alles bei dir in etwa in dieser Reihenfolge ab :
- Erfrage Mausposition
- Rendere Zeugs
- setze Maus in die Mitte
?
Gruß Matthias. |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 28.08.2011, 23:10 Titel: |
|
|
Jop ganz genau so.
main
CPP: | ...
ShowCursor(FALSE);
POINT MousePos;
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
GetCursorPos(&MousePos);
Engine.StarteEngine(); //hier wird die Framerate aktualisiert und beginScene
Engine.ladeMatrix(); //befindet sich in einer extra schleife damit nur einmal geladen wird, lädt grafiken und meshes und Terrain
Engine.RenderMatrix(); // Rendert alles
float RotationY = static_cast<float>((SCR_WIDTH / 2 - MousePos.x)) / Engine.GetFramerate() * 8; // *8
float RotationX = static_cast<float>((SCR_HEIGHT / 2 - MousePos.y)) / Engine.GetFramerate() * 8;
Engine.MoveCamera(RotationX, RotationY);
//sobald ich diese zeile auskommentiere und ich die maus nur minimal von der mitte entferne funktioniert alles ohne probleme
//das kann ich aber nicht weg lassen, da sich sonst alles dreht
SetCursorPos(SCR_WIDTH / 2, SCR_HEIGHT / 2);
Engine.BeendeEngine();
}
|
Haha ist mir jetzt voll Peinlich, beim Menu und sonstigem Herauskürzen ist mir der Fehler aufgefallen.
Ich muss das Mit der maus machen bevor ich BeginScene mache, dann geht es.
(Habe den Beitrag da lassen, falls es anderen auch mal Passiert)
GRuß Robin |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 29.08.2011, 17:01 Titel: |
|
|
Dacht ich mir.
Setze mal
CPP: | SetCursorPos(SCR_WIDTH / 2, SCR_HEIGHT / 2); |
direkt hinter
CPP: | GetCursorPos(&MousePos); |
und versuchs dann.
Also:
- Erfrage Mausposition
- Setze Maus in die Mitte
- Rendere Zeugs |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|