Я напишу належну відповідь, оскільки я був на вашому етапі близько 2 місяців тому.
Я почав писати дуже простий ігровий движок, щоб я міг краще навчитися OpenGL 3.x, але, оскільки мій досвід і мої розріджені знання про те, як повинна бути розроблена 3D-гра, я зазвичай стикаюся з проблемами, коли я розумію, що я повинен був створити свої заняття по-різному.
Не хвилюйся з цього приводу. За браком досвіду ви ніколи не зможете подумати про всі можливості та способи використання даного класу у вашому двигуні. Найкраще, якщо врахувати основні особливості класу, реалізувати його та реструктуризувати пізніше. Не намагайтеся передумувати речі, на цьому етапі ви витрачаєте час. Моя перша гра була повним безладом, я впевнений, що це було так для більшості людей.
Інші проблеми, з якими я стикаюсь, - це як коротко відстежувати час у грі та при необхідності оновлювати рух та як сказати рендері, що його потрібно перемалювати.
Вам потрібні знання про те, що таке цикл гри. Це гарне місце для початку. Після того, як ви почнете писати складніший код, як, наприклад, обробка фізики, ви можете розглянути петлі зі змінним часом кадру, але почати з малого. Простий цикл гри з фіксованою рамкою зараз повинен вам вистачити.
Також мені постійно потрібно робити функції Get і Set для передачі різних прапорів від одного об’єкта до іншого, це погана практика?
Це більше питання інженерії програмного забезпечення. З часом ви побачите, які дані потрібно захистити, а які - безпечні. Це, мабуть, найкраще, якщо ви просто реалізуєте функцію, а потім побачите те, що не виявляється поза нею, і можна розглядати як загальнодоступні дані.
Це все питання досвіду. Ви напишете клас камери, після чого побачите, яку функціональність ви хочете від нього, поряд з матрицями перетворення. Якщо ви хочете отримати будь-які негайні поради, я б сказав, застосуйте голі кістки, продовжте пізніше.
Статті та книги:
- Розробка ігрового двигуна
Ці книги розповідають про архітектуру сучасних ігрових двигунів та трубопроводів. Вони дадуть вам хороший огляд основної технології. Я рекомендую першу книгу, якщо вам доведеться вибирати, вона менш "упереджена" щодо певних технологій, хоча врешті-решт, ви, ймовірно, хочете пройти обоє, оскільки вони чудові джерела знань.
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/papers/collision/collision.pdf
(Я пов'язую це, тому що мені важко було знайти статті про те, як належним чином виявлено 3D-зіткнення.)
Книг більше, але до того моменту, коли ви закінчите це (особливо архітектура Game Engine), ви будете краще знати, що вам потрібно.
До речі, я все ще використовую freeglut, чи рекомендуєте ви перейти до кращої системи вікон, перш ніж прогресувати або після того, як я краще зрозумію OpenGL?
WinAPI, якщо ви відчуваєте, що у вас є час і бажання вивчити програмування Windows (якщо ви розробляєте для Windows). FreeGLUT чудово підходить для навчання, але, зрештою, вам потрібна додаткова функціональність. Хоча, якщо ви хочете пройти зовсім інший маршрут, ви можете запустити OpenGL з такими бібліотеками, як SFML або SDL. Дотримуйтесь FreeGLUT, якщо ви не впертий, як я. Я пішов прямо на WinAPI.