タイトル通りですがOenGLは画面の中心が0,0なので2Dのゲームはちょっと扱いづらいのですがどうすればいいのでしょうか?
cpp
1 2//描画アップデート 3void Game::GenerateOutput() 4{ 5 6 //画面クリア関係 7 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 8 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 9 10 11 //ステージ 12 for (int y = 0; y < 11; y++) 13 { 14 for (int x = 0; x < 10; x++) 15 { 16 if (stage[y][x] == 1) { 17 DrawMap->DrawGraph(stage_pos.x + (CELL * x) , stage_pos.y + (-CELL * y)); 18 } 19 } 20 } 21 22 23 if (DownCollision() == false) { 24 // if (true) { 25 // printf("-------------------------\n"); 26 //ブロック表示 27 for (int i = 0; i < 4; i++) { 28 for (int j = 0; j < 4; j++) { 29 30 if (block[1][i][j] == 1) { 31 32 glm::ivec2 v; 33 v.x = (CELL * j); 34 v.y = (CELL * i); 35 36 Set_rotate(&v, r); 37 38 if (r == 0) 39 { 40 sprite->DrawGraph((move_sprite.x - CELL * 2) + v.x, (move_sprite.y + CELL * 2) - v.y); 41 } 42 else if (r == 1) 43 { 44 sprite->DrawGraph((move_sprite.x) + v.x, (move_sprite.y + CELL * 2) - v.y); 45 } 46 else if (r == 2) 47 { 48 sprite->DrawGraph((move_sprite.x - CELL * 1) + v.x, (move_sprite.y) - v.y); 49 } 50 else if (r == 3) 51 { 52 sprite->DrawGraph((move_sprite.x - CELL * 2) + v.x, (move_sprite.y + CELL * 1) - v.y); 53 } 54 } 55 } 56 } 57 // printf("-------------------------\n"); 58 } 59 60 61 62 63 //デバッグログ 64 char str[1000]; 65 sprintf_s(str, sizeof(str),"block x %d , y %d", move_sprite.x / CELL, move_sprite.y / CELL); 66 font->RenderText(str, -CELL * 7, -CELL * 2, 0.5, glm::vec3(1.0, 1.0, 1.0)); 67 68 sprintf_s(str, sizeof(str), "stage x %d , y %d", stage_pos.x, stage_pos.y); 69 font->RenderText(str, -CELL * 7, -CELL * 3, 0.5, glm::vec3(1.0, 1.0, 1.0)); 70 71 72 73 sprintf_s(str, sizeof(str), "R: %d", r); 74 font->RenderText(str, -CELL * 7, -CELL * 1, 0.5, glm::vec3(1.0, 1.0, 1.0)); 75 76 77 glViewport(0, 0, WIDTH, HEIGHT); //ビューポート 78 glfwSwapBuffers(Window); //ダブルバッファリング 79 glfwPollEvents(); //イベント処理 80 81 82}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/14 02:14
2020/10/15 00:56