Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
for(vector<Object*>::iterator i = blocks.begin(); i != blocks.end(); i++){ Vector3 blockPos = (*i)->getPosition(); if(pos.x < blockPos.x+0.045 && pos.x > blockPos.x-0.045 && pos.z < blockPos.z+0.02 && pos.z > blockPos.z-0.02){ moveBall.z *= -1; break; } } |
Community-Fossil
Community-Fossil
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
for(vector<Object*>::iterator i = blocks.begin(); i != blocks.end(); i++){ Vector3 blockPos = (*i)->getPosition(); float dif = 0.02+blockPos.z/6; if(pos.x < blockPos.x+0.045 && pos.x > blockPos.x-0.045 && pos.z < blockPos.z+dif && pos.z > blockPos.z-dif){ moveBall.z *= -1; score++; blocks.erase(i); break; } } |
Community-Fossil
Zitat
Ich seh nicht wo bei 100 FPS das Problem liegt!?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
void updateBall(float time) { Vec3 ballPos = m_Ball->getPosition(); ballPos += m_Velocity * time; if ( collides(ballPos) ) { m_Velocity.z *= -1.0f; ballPos += m_Velocity * time; } m_Ball->setPosition(ballPos); } |
Community-Fossil
Zitat
Ich vermute, deine Blöcke sind sehr simple Modelle, die Zeit zum eigentlichen darstellen ist daher verschwindend gering. Allerdings muss sich die Grafikkarte auf jeden DrawCall erstmal einstellen, du solltest also versuchen, möglichst wenig Aufrufe zu haben, also z.B. slle Blöcke in einen großen VertexBuffer packen und auf einen Schlag rendern.
Zitat
Es gibt eigentlich nur eine Lösung für die Richtungsänderung. Ich mach das mal etwas grob:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 void updateBall(float time) { Vec3 ballPos = m_Ball->getPosition(); ballPos += m_Velocity * time; if ( collides(ballPos) ) { m_Velocity.z *= -1.0f; ballPos += m_Velocity * time; } m_Ball->setPosition(ballPos); }
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeKugelschieber« (20.04.2011, 12:29)
Werbeanzeige