월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 게임 만들기 연습 문제 패키지
15:00 부근 질문 있습니다.
#pragma once #include "Game2D.h" namespace jm { class MyTank { public: vec2 center = vec2(0.0f, 0.0f); //vec2 direction = vec2(1.0f, 0.0f, 0.0f); void draw() { beginTransformation(); { translate(center); drawFilledBox(Colors::green, 0.25f, 0.1f); // body translate(-0.02f, 0.1f); drawFilledBox(Colors::blue, 0.15f, 0.09f); // turret translate(0.15f, 0.0f); drawFilledBox(Colors::red, 0.15f, 0.03f); // barrel } endTransformation(); } }; class MyBullet { public: vec2 center = vec2(0.0f, 0.0f); vec2 velocity = vec2(0.0f, 0.0f); void draw() { beginTransformation(); translate(center); drawFilledRegularConvexPolygon(Colors::yellow, 0.02f, 8); drawWiredRegularConvexPolygon(Colors::gray, 0.02f, 8); endTransformation(); } void update(const float& dt) { center += velocity * dt; } }; class TankExample : public Game2D { public: MyTank tank; //MyBullet* bullet = nullptr; //MyBullet* bullet2 = nullptr; // bullet은 총알이 발사됐을 때만 존재하기 때문에 포인터로 되어있고 nullptr로 초기화가 되어있다. //TODO: allow multiple bullets int index = 0; std::vector<MyBullet*> ptr_bullet_array = { nullptr }; //TODO: delete bullets when they go out of the screen public: TankExample() : Game2D("This is my digital canvas!", 1024, 768, false, 2) {} ~TankExample() { //if (bullet != nullptr) delete bullet; //if (bullet2 != nullptr) delete bullet2; for (int i = 0; i <= index; ++i) { if (ptr_bullet_array[i] != nullptr) delete ptr_bullet_array[i]; } } void update() override { // move tank if (isKeyPressed(GLFW_KEY_LEFT)) tank.center.x -= 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_RIGHT)) tank.center.x += 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_UP)) tank.center.y += 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_DOWN)) tank.center.y -= 0.5f * getTimeStep(); // shoot a cannon ball if (isKeyPressedAndReleased(GLFW_KEY_SPACE)) { //if (bullet == nullptr) //{ // bullet = new MyBullet; // bullet->center = tank.center; // bullet->center.x += 0.2f; // bullet->center.y += 0.1f; // bullet->velocity = vec2(2.0f, 0.0f); //} //else if (bullet2 == nullptr) //{ // bullet2 = new MyBullet; // bullet2->center = tank.center; // bullet2->center.x += 0.2f; // bullet2->center.y += 0.1f; // bullet2->velocity = vec2(2.0f, 0.0f); //} ptr_bullet_array.push_back(nullptr); ptr_bullet_array[index] = new MyBullet; ptr_bullet_array[index]->center = tank.center; ptr_bullet_array[index]->center.x += 0.2f; ptr_bullet_array[index]->center.y += 0.1f; ptr_bullet_array[index]->velocity = vec2(2.0f, 0.0f); index++; } //if (bullet != nullptr) bullet->update(getTimeStep()); //if (bullet2 != nullptr) bullet2->update(getTimeStep()); // rendering tank.draw(); //if (bullet != nullptr) //{ // bullet->draw(); //} //if (bullet2 != nullptr) //{ // bullet2->draw(); //} //if (bullet != nullptr && bullet->center.x > 1.2f) //{ // delete bullet; // bullet = nullptr; //} //if (bullet2 != nullptr && bullet2->center.x > 1.2f) //{ // delete bullet2; // bullet2 = nullptr; //} //for (int i = 0; i <= index; ++i) //{ // if (ptr_bullet_array[i] != nullptr && ptr_bullet_array[i]->center.x > 1.2f) // { // delete ptr_bullet_array[i]; // ptr_bullet_array[i] = nullptr; // } //} for (int i = 0; i <= index; ++i) { if (ptr_bullet_array[i] != nullptr) { ptr_bullet_array[i]->update(getTimeStep()); ptr_bullet_array[i]->draw(); if (ptr_bullet_array[i]->center.x > 1.2f) { delete ptr_bullet_array[i]; ptr_bullet_array[i] = nullptr; } } } } }; }교수님께서 설명하신 대로 연습문제를 풀어봤고 문제없이 잘 실행되는 거 같긴 한데 메모리 누수가 해결됐는지 잘 모르겠습니다. 연습문제를 풀기 전에 디버깅 모드로 봐도 CPU 사용량이 그대로인데 어디서 어떻게 확인할 수 있을까요?
- 미해결홍정모의 게임 만들기 연습 문제 패키지
(20.4 참고) 20.4에 해당하는 가이드 페이지가 어디있는지 모르겠습니다.
Vcpkg를 이용해서 opengl, glew, glfw3 설치(20.4 참고)위 글을 보면 20.4를 참고하여 설치하라는 것 같은대요. 20.4가 어디에 있는지 무엇을 참고 해야하는지 모르겠습니다. 유튜브를 통해 c / c++을 듣고 api를 듣는 도중 해당 강의를 알게 되어 해당 강의를 우선적으로 듣고 api를 들어보는게 좋을 것 같아서 구매를 했는대요. 20.4 / 20.5 / 20.6 참고하라는 말이 있는대 어디를 들어가야 참고할 수 있는지를 모르겠습니다. 알려주시면 감사하겠습니다. ㅜㅠ
- 미해결홍정모의 게임 만들기 연습 문제 패키지
multimap 질문
총알 생성시 초기화를 진행 후multimap<Mybullet*, vec2> _map 변수에 insert 추후 update에서 for문을 이용 _map안의 second(총알의 위치)의 값을 증가된 값으로 변경 for문을 이용하여 iterator에 begin~end()값을 순찰 if문으로 현재의 iter->second(총알의 위치) 값의 좌표를 파악하여 총알 삭제 이런 느낌으로 접근 중인데 삭제를 하려고 하면 메모리 범위를 벗어났다고 하네요 혹시 제가 map을 잘못 생각하고 사용하고 있는건가요? _map의 size()를 확인할 시에는 분명 총알을 발사할 때마다 size가 늘어나는걸 확인 했음에도 계획대로 되지 않아 질문드립니다 이 코드의 경우 vector를 사용하기에는 빈번하게 추가 삭제가 일어나서 제외하고 multimap을 사용하려고 해봤는데 이런식의 접근이 맞는건가요? 아래는 작성 코드입니다 if (isKeyPressedAndReleased(GLFW_KEY_SPACE)) { bullet = new MyBullet; bullet->center = tank.center; bullet->center.x += 0.2f; bullet->center.y += 0.1f; bullet->velocity = vec2(2.0f, 0.0f); _map.insert(std::pair<MyBullet*,vec2>(bullet, bullet->center)); } if (!_map.empty()) { for (std::multimap<MyBullet*, vec2>::iterator iter = _map.begin(); iter != _map.end(); ++iter) { iter->first->update(getTimeStep()); iter->second = iter->first->center; if (iter->second.x > 1.3f) _map.erase(iter); } } if(!_map.empty()) { for (std::multimap<MyBullet*, vec2>::iterator iter = _map.begin(); iter != _map.end(); ++iter) { iter->first->draw(); } }
- 미해결홍정모의 게임 만들기 연습 문제 패키지
도형들의 움직임이 너무 빠릅니다...
안녕하세요! 다름이 아니라 깃허브에 있는 예제코드를 클론한 뒤, 아무것도 건들지 않고 영상에 나온것 그대로 rotate(time * 90.0f)를 하면 도형이 영상에서 나온것 처럼 천천히 도는게 아니라 진짜 미친듯이 빠르게 돕니다... 그리고 //jm::TankExample().run(); 예제를 실행시키면 살짝만 눌러도 탱크가 엄청 빠르게 움직입니다. 혹시 클론을 했을때 문제인가 싶어서 다시 클론해봐도 같은 문제가 발생하고, 전부 복사 붙여넣기 해봐도 같은 결과가 나옵니다.ㅠㅠ 혹시 뭐가 문제인지 알 수 있을까요?
- 미해결홍정모의 게임 만들기 연습 문제 패키지
vcpkg 설치를 했는데
비주얼 스튜디오 에서는 1>LINK : fatal error LNK1104: 'glfw3.lib' 파일을 열 수 없습니다. 이런 오류가 뜨고 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 오류 LNK1104 'glfw3.lib' 파일을 열 수 없습니다. Lecture1 \GameDevPracticePackage-master\Chapter1\Lecture1\LINK 1 비주얼스튜디오 2017에선 이런 오류가 뜨는데 왜그런지 모르겠습니다.. vcpkg install opengl:x64-windows vcpkg install glew:x64-windows vcpkg install glfw3:x64-windows이런식으로 cmd 로 설치를 하고 integrate install 까지해서 done 이 잘 떴는데도 그러네요 ㅠㅠ
- 미해결홍정모의 게임 만들기 연습 문제 패키지
mutiple bullet 관련 질문 드립니다.
안녕하세요. 좋은 수업 재밋게 잘 듣고 있습니다. multiple bullet 관련해서 내주신 숙제를 풀다가 의문점이 생겨 질문을 드립니다. tank example 에 public 에 다음과 같이 std::vector<MyBullet*> bullet_container; 를 추가하고 update() override 부분에 if (isKeyPressedAndReleased(GLFW_KEY_SPACE)) { (기존코드) MyBullet* tmp = bullet; bullet_container.push_back(tmp); } 이렇게 볼드체 한 부분을 추가해주었는데 왜 화면상에서는 계속 한 발씩만 발사되는지 모르겠습니다. 제가 잘못 알고 있는 부분이 있다거나 힌트를 주시면 감사하겠습니다!
- 미해결홍정모의 게임 만들기 연습 문제 패키지
실행 후 화면 꺼짐
안녕하세요 교수님! 강의를 듣고 따라해보는 과정에서 실행하면 자꾸 컴퓨터 자체가 꺼져버리는 오류가 납니다. 어떤 이유에서인지 알 수 있을까요? 구글링을 해봐도 한글로는 이에 대한 내용이 나와있지 않네요ㅜㅜ
- 미해결홍정모의 게임 만들기 연습 문제 패키지
예제 파일 실행 시, 에러
먼저 시스템 사양입니다. 64비트 운영체제임을 확인하였고 비주얼 스튜디오 2022 64비트 설치했습니다. 물론 os와 visual studio 모두 영문입니다. 예제 실행 시, 경로를 찾을 수 없다는 에러가 발생하고 있습니다. 대략 GameDevPracticePackage-master\Chapter1\Lecture1\Debug\Lecture.exe파일을 찾을 수 없다 와 같이 뜨는 상황입니다. 따배씨 강의에서 안내해주신대로 깃 헙을 통해 vcpkg를 클론하고 그 후 vcpkg install opengl:x64-windows vcpkg install glew:x64-windows vcpkg install glfw3:x64-windows vcpkg install integrate install 의 명령어들을 사용하여 모두 설치를 하였습니다. 하지만 위의 명령어들을 모두 수행하고 재시도할 경우 #include 부분에서 에러가 발생하였습니다. 또한 다음과 같은 메세지가 뜨는 것을 확인하였습니다. 따라서 sdk의 버전이 맞지 않는가 라는 합리적 의심을 하여 해당 버전을 설치하여 주었습니다. 하지만 그럼에도 문제는 계속되고 있어 무엇이 문제인가 해보니 해당 프로젝트를 리타겟팅을 해주어야한다는 것을 알게 되었고 이를 시도하려는 찰나 다음과 같은 상황에 직면했습니다. 즉, 솔루션 모음에서 우클릭시, 리타게팅 옵션이 떠야하는데 아무것도 뜨지 않습니다. 예제 파일이 아닌 새 파일의 경우 좌상단의 프로젝트 탭도 다르게 뜨는 것으로 보입니다. 왜 이런건가요? 지금 대략 예제 실행만 대략 24시간 동안 visual studio 지웠다가 깔았다가 vcpkg 지웠다가 깔았다가만 반복하고 있습니다 혹시나 이와 같은 문제를 해결하신 분들 계시다면 그 누구나에게 도움을 간곡히 부탁드립니다.
- 미해결홍정모의 게임 만들기 연습 문제 패키지
아직 못풀어도 괜찮을까요?
최근에 c++강의 다 보고는 왔는데사실 강의만 다 봤을 뿐이지 c++ 사용수준은 강의 듣기전하곤 똑같습니다.. 다만 코드를 봤을떄 완벽하진 않지만 어떤 코드인지 어떻게 작동하는지 정도만 아는수준입니다.. 그래서 인터넷 게임예제 같은거 코드보면서 따라 치면서 익숙해져야겠다 싶어서 찾다이 강의를 알고 수강을 했는데요1.1이나 1.2는 작성된 코드에서 한두개만 바꾸는 수준이라어려움 없이 금방 해결했습니다..근데 이번꺼는 어떻게 코드를 짜야겠다는 머리에 그려지는데그 생각을 코드로 구현하는게 쉽지않네요.. // 예제1 총알을 발사할떄 총알이 사라지지 않고 누적되어 메모리 누수가 발생함 // 해결방법은 게임창과 총알을 인식하게해서 화면 밖으로 나갔을떄 총알을 없애야됨 // //예제2 총알을 연속으로 사용할 경우 앞에 발사된 총알이 사라짐 해결하기 //키를 누를떄 마다 새로운 총알 객체를 생성해야됨 어떤 코드를 써야할지도 모르겠고.. 어떤 코드를 써야될지 모르는 상태라 고민을 해도 제자리 걸음이네요.. 보통은 다 푸는게 정상일까요?? 이것도 일단 완강을 해보고 나중에 풀어야 될까요? 아니면 다른 사람의 코드를 보고 이해한 다음 넘어가거나 나중에 완강후에 새롭게 짜보는게 좋을까요.. 항상 연습문제가 나오면 공부방법 떄문에 고민이 많습니다..
- 미해결홍정모의 게임 만들기 연습 문제 패키지
코드 열었을 때 오류
안녕하세요 교수님! 이 수업을 듣기 위해 강의자료를 찾다가 커뮤니티 게시판에서 찾게 됐는데, 열어서 실행해보려 하니 오류가 뜹니다. 사진은 코드를 처음 열었을 때 화면인데, 어떤문제가 있을까요?.. 감사합니다.
- 미해결홍정모의 게임 만들기 연습 문제 패키지
코딩공부에 대해서 막히는부분
공부 시작한지 2달 되었는데 공부해오면서 코드를 어떻게 짤꺼인지는 항상 고민하면 해결되었는데 화면에 도트를 찍기위해서는 코드를 어떻게 짤껀가를 알아서는 해결이 되지않아요 라이브러리라던가 api 일주일넘게 그렇게 구글링 많이하고 그랬는데 화면에 비트를 출력하는것이 해결되지않아썽요 선생님강의도 마찬가지로 화면의 비트를 출력하기위해서 직접 코드를 공부하는게아니라 외부의 함수를 여러개 불러와서 그 불러온 외부의함수의 사용법을 알아서 화면에 비트를 출력하는거였어요 할수없었어요 선생님강의도 마찬가지였어요 처음부터 코딩을하는게아니였어요 코딩을 하는건 어렵지않지만 외부의 함수를 막 불러와서 하는건 해낼수없었어요 공부하는게 힘들어요 코딩은 어렵지않았어요 코딩은 쉬웠어요 몇시간만 고민하면 결과를 만들어낼수있었어요 할수있는걸알아서 코딩하는거는 실습도하지않았어요 근데 코딩이 아니예요 보면 대부분 무슨 외부함수를 불러와서 작동시키는거였어요 이건 해낼수없었어요 c언어로 테트리스 라는 게임을 구현하는게 제일 도움될것같았어요 근데 그이전에 화면에 비트를 출력하고싶었어요 2차원배열을 통해서 근데 그걸 화면에 비트에 일단 찍히는게 먼저 되어야 코딩을 할수있어요 정말 코딩은 안어렵지만 너무 쉽지만 외부함수 막불러오고 윈도우라이브러리, win 32 이런건 도저히 해낼수가 없었어요 방법을 찾고싶어요
- 해결됨홍정모의 게임 만들기 연습 문제 패키지
vcpkg 설치 오류
openGL 설치하기 위해 vcpkg를 설치하려는데 cmd 에서 아래사진처럼 오류가 뜨고 다음으로 못넘어가고 있습니다..ㅠ 이럴땐 어떻게 해야하나요?
- 미해결홍정모의 게임 만들기 연습 문제 패키지
랜덤값 질문입니다.
글 작성이 제대로 안되서, 코드에 대한 설명이 미흡할 수 있는 점 미리 양해구합니다.ㅠㅠ 저는 집 색깔을 랜덤으로 정할 때, 기본값이 미리 정해져 있는 상태에서 사용자가 특정 부분만 색깔을 랜덤으로 돌릴 수 있도록 함수를 작성했습니다. 아래와 같은 두가지 함수를 실험삼아 해봤는데요. 첫번째 함수는 랜덤값을 불러오는 헤더를 외부에서 매개변수로 가져오고 두번째는 함수 안에다가 선언했습니다. 그런데, 두번째 함수는 랜덤값이 다 같게 적용이 되더군요. 분명 랜덤값은 _rnd.getInt(0,6);에서 가져올텐데 왜 두개의 함수의 결과가 다른지 이해가 가지 않습니다.ㅠㅠ 제가 분명 기본이 부족한 거일 수도 있겠지만, 인터넷 검색으로도 썩 답변이 안되어 질문글 올립니다. 감사합니다.
- 미해결홍정모의 게임 만들기 연습 문제 패키지
vcpkg 다운로드에 문제를 겪고있습니다
현재 vcpkg를 통하여 opengl, glew, glfw3를 32비트와 64비트 모두를 선생님의 chapter가 있는 곳에 전부 다운받아 놓은 상태입니다. chapter1 - lecture1.sln을 통하여 코드를 실행하였더니 "파일소스를 열 수 없습니다 "GLFW/glfw3.h" 이렇게 에러가 나는데 어떻게 하면 해결 할 수 있을까요?
- 해결됨홍정모의 게임 만들기 연습 문제 패키지
if 문에 >= 대신 == 넣으면 작동을 하지 않는 이유가 무엇인가요.
안녕하세요 교수님. 벽에 부딪힐 때 작성하는 if 문안에 <=(>=)대신 == 을 넣으면 공이 투과하는 이유가 무엇일까요 컴퓨터가 연속적이지 않기 때문에, 혹시 pos.x 가 정확히 0.9f를 지나지 않을 수 있다고 생각해서, cout을 써서 실시간으로 x좌표를 찍어보니, 0.9를 지날 때도 있고, 안지날 때도 있었습니다. 그런데 0.9가 찍힐때도 벽을 투과 하는 이유를 모르겠습니다. 감사합니다.
- 미해결홍정모의 게임 만들기 연습 문제 패키지
multiple bullet 문제
안녕하세요, multiple bullet 문제를 생각해보고 있는데, 혼자 생각한지 너무 오래 되어, 생각이 고착되어 있는 거 아닌가해서, 질문글을 올려봅니다. MyBullet* bullet[100] = { nullptr, }; int i = -1; //bullet number 와 같이 pointer 들로 이루어진 배열을 사용해보려고 했습니다. if (isKeyPressedAndReleased(GLFW_KEY_SPACE)) { i++; bullet[i] = new MyBullet; bullet[i]->center = tank.center; bullet[i]->center.x += 0.2f; bullet[i]->center.y += 0.1f; bullet[i]->velocity = vec2(0.5f, 0.0f); } 와 같이 하여, 스페이스바를 누를 때마다, array 한칸한칸에 bullet 객체포인터를 저장했습니다. 여기서부터, 문제가 이렇게 해도 결국, bullet[i] -> update()와 같은 줄을 100줄을 써야한다는 것입니다. if (bullet[0] != nullptr) bullet[0]->update(getTimeStep()); if (bullet[1] != nullptr) bullet[1]->update(getTimeStep()); if (bullet[2] != nullptr) bullet[2]->update(getTimeStep()); if (bullet[3] != nullptr) bullet[3]->update(getTimeStep()); if (bullet[4] != nullptr) bullet[4]->update(getTimeStep()); 와 같이 써야지 작동을 했습니다. 밑에 draw() 함수 도 마찬가지여서, 코드를 줄일 수 있는 방법을 생각해보다가, 도저히 생각이안나서 질문글을 올려봅니다. 찾다보니 thread를 이용하는 것도 나오고 하지만, 유용하지 않다고 판단했습니다. for문을 돌리면, 다음 loop으로 넘어갈 때 실행되던 update함수가 사라지게 되어, 결국 모든 객체의(bullet[0], bullet[1]....)의 update 메소드를 동시에 실행시키는 방법을 일일히 100줄을 쓰는 것 외에는 찾을 수 없어, 질문글을 올려봅니다 ㅠ 감사합니다.
- 미해결홍정모의 게임 만들기 연습 문제 패키지
프로그램 실행 순서 질문
2강 과제( 지구 달 자전 공전)중 질문 있습니다. 하기의 코드에서 주석 단 것 처럼 실행 순서가 맞나요? (주석은 실행순서를 의미합니다) #pragma once #include "Game2D.h" namespace jm { class SolarSystem : public Game2D { float time = 0.0f; public: void update() override { beginTransformation(); { rotate(time * 20.0f); // 2 drawFilledStar(Colors::gold, 0.2f, 0.13f); // 1 rotate(time * 45.0f); // 5 translate(0.5f, 0.0f); // 4 drawFilledCircle(Colors::blue, 0.1f); // 3 rotate(time * 90.0f); // 8 translate(0.2f, 0.0f); // 7 drawFilledCircle(Colors::yellow, 0.05f);// 6 } endTransformation(); time += this->getTimeStep(); } }; }
- 미해결홍정모의 게임 만들기 연습 문제 패키지
2.2.2 상속으로 깔끔하게 init 메서드 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 부모 클래이스의 init 과 자식클래스의 init 이 각각 있는데 Triangle 객체에서 init 메서드를 호출해주면 부모 클래스의 init 메서드를 호출하지 않고 Triangle 의 init 메서드를 호출하는 이유가 함수 파라미터가 다르기 때문이 맞나요? override 키워드를 붙이는 경우는 함수 오버라이드를 하는 경우에 사용을 하고 init 메서드들 같은 경우는 함수 오버로딩이라고 판단하는게 맞는지 궁금합니다.
- 미해결홍정모의 게임 만들기 연습 문제 패키지
txt file로부터 키바인딩
안녕하세요, 1) Key binding txt 파일을 아래와 같이 구성하였고, 커맨드맵을 key, value그리고 switch case문으로 매핑하였는데요, 이게 강의에서 말씀해주시려는 의도가 아닌거같아서요. 어떻게 하는게 좋을지 궁금합니다. 2) 아주 만약, 이런 식으로 하는게 맞다면, SPACE 의 경우 string 으로 switch case를 돌릴수없던데 어떻게 해야하는지 궁금합니다. P.S. 네이버 카페가입이 미국 번호만 존재할 시에, 인증번호가 오지않아 가입을 할 수 없었습니다. ㅜ
- 미해결홍정모의 게임 만들기 연습 문제 패키지
게임 실행 중 계속 프레임이 달라지는 문제점
안녕하세요, 코드 작성중에 궁금한 점이 있어 질문드립니다. 예제 코드를 계속 컴파일하다가 이상한 점을 발견했는데요, 게임의 fps가 계속 달라진다는 것입니다. 어쩔때에는 물체가 부드럽게 이동하고, 어쩔때에는 물체가 뚝뚝 끊겨서 이동하는 느낌을 받습니다. 원인이 무엇일까 생각해보다가, Game2D 클래스의 run() 메소드에 관련 코드가 있는 것을 확인했습니다. 위 if문으로 인해서 시스템이 계속 sleep을 하니까 프레임이 끊기는 것처럼 보이더라구요. 또한 dt 값을 계속 확인해보니 값이 불규칙한 것을 확인했습니다. dt 값이 불규칙적이니, sleep도 일정하지 않게 작용하면서 화면 프레임이 계속 달라지는 현상이 생기는 것으로 예상됩니다. (dt 값이 왜 불규칙한지는 모르겠습니다.) 찾아보다가 glfw 메소드 중에 glfwSwapInterval 이라는 메소드가 있어서 사용해봤는데, 인자로 1을 넣어주면 fps가 자동으로 144에 맞춰지더라구요. 또한 일정한 fps 값을 유지시켜주니, 컴파일 할때마다 게임화면의 fps가 달라지는 문제점도 해결된 것 같습니다. 그렇다면 timer class 를 사용하지 않고, 어차피 timer는 프레임 제한을 위한 도구이니 앞서 이야기한 glfwSwapInterval 메소드를 사용해도 괜찮을까요? 위는 timer class를 사용했을 때 FPS를 계산한 것이고, (worst case인 경우 위처럼 프레임이 변합니다.) 위는 glfwSwapInterval 메소드를 사용했을 때 FPS입니다.