質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

456閲覧

カメラを中心画面に写ってるものだけのステージを描画する方法

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/02/04 08:41

編集2022/02/04 09:27

提示画像ですがこれはカメラの座標を中心にウインドウの範囲だけを描画するプログラムなのですがそれを実装するアルゴリズムがわかりません。提示コードを自分で実装してみたのですがカメラが動くと画像ようにうまく描画できませんどうやって実装するのでしょうか?

現状

カメラ座標(0,0)
プレイヤー座標(0,0) ゲームの仕様上画像には写ってません
マップチップ(100,100)

イメージ説明

cpp

1 2void Stage::Renderer(const glm::mat4 view)const 3{ 4 5 glm::ivec2 cameraPosition = camera->getPosition(); 6 cameraPosition.x = cameraPosition.x / CELL; 7 cameraPosition.y = cameraPosition.y / CELL; 8 9 10 11 glm::ivec2 windowSize = FrameWork::GetWindowSize(); 12 windowSize.x = windowSize.x / CELL; 13 windowSize.y = windowSize.y / CELL; 14 15 16 17 18// printf("%d\n",cameraPosition.y - (windowSize.y / 2) /2); 19 //printf("%d\n\n",stage->at(0).size() - (stage->at(0).size() - windowSize.x) / 2); 20 //printf("%d\n\n",stage->at(0).size() - (stage->at(0).size() - windowSize.x) / 2); 21// printf("y %d\n\n",(cameraPosition.y - (windowSize.y / 2) / 2)); 22// printf(" < %d\n\n",((stage->size() - (stage->size() - windowSize.y)) / 2) ); 23 24 25 26 27 for(int y = cameraPosition.y - (windowSize.y / 2) / 2; (int)y <= (int)(((stage->size() - (stage->size() - windowSize.y)) / 2)) ; y++) 28 { 29// printf("y: %d\n",y); 30 31 if(y >= 0) 32 { 33 for(int x = cameraPosition.x - (windowSize.x / 2) / 2; (int)x <= (int)((stage->at(y).size() - (stage->at(y).size() - windowSize.x)) / 2); x++) 34 { 35// printf("x: %d\n",x); 36 37 if( (x >=0) && (y >= 0) ) 38 { 39 // printf("pos: %d , %d\n",x,y); 40 41 switch (stage->at(y).at(x)) 42 { 43 case 1: 44 { 45 FrameWork::Renderer_Sprite(view,tile, 46 //glm::vec3( (CELL * x) - (FrameWork::GetWindowSize().x / 2 - (CELL /2)),(FrameWork::GetWindowSize().y / 2.0f - (CELL / 2)) - (CELL * y),0) 47 glm::vec3( (CELL * x) - (CELL /2),(CELL / 2) - (CELL * y),0) 48 ,glm::ivec2(0,0),glm::ivec2(CELL,CELL)); 49 } 50 break; 51 } 52 } 53 } 54 55 } 56 } 57} 58

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2022/02/04 09:25

> カメラの座標を中心にカメラが写ってる範囲だけを描画する (毎度のことですが)おっしゃっている意味がわかりません.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問