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

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

新規登録して質問してみよう
ただいま回答率
85.40%
C++

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

Q&A

1回答

678閲覧

[SDLライブラリ] ミリ秒の整数値からfloat型のミリ秒を取得したい。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

0グッド

0クリップ

投稿2022/08/18 12:06

編集2022/08/18 12:29

提示コードですがレンダーバッファー関数とレンダークリアー関数はゲームループの最後と最初に置いています。
利用部のようにかなり大きい値を入れると動くのですが動きがカクカクしてしまいます。デルタタイムの設定が間違えていると思うのですがこれはなぜでしょうか?

知りたいこと

ミリ秒の整数値からfloat型のミリ秒を取得したい。

参考サイト:https://qiita.com/murati111/items/c07fbe7b0175012f549c

コンソール画面
0 0 0 0 1e-06 0 0 0 0 0 0 0 1e-06 0 1e-06 0

利用部

cpp

1 2/*################################################# 3# 更新 4###################################################*/ 5void Ball::Update() 6{ 7 //std::cout<<(float)SDLGame::GetDeltaTime()<<std::endl; 8 printf("%f\n",SDLGame::GetDeltaTime()); 9 10 position.x += SDLGame::GetDeltaTime() * 1000; 11} 12
設定部

cpp

1 2/*################################################# 3# レンダーバッファークリア 4###################################################*/ 5void SDLGame::RenderClear() 6{ 7 prevTime = SDL_GetTicks(); 8 SDL_RenderClear(render); 9} 10 11 12/*################################################# 13# デルタタイムを取得 14###################################################*/ 15float SDLGame::GetDeltaTime() 16{ 17 return deltaTime; 18} 19 20 21/*################################################# 22# レンダーバッファー 23###################################################*/ 24void SDLGame::RenderPresent() 25{ 26 deltaTime = ((float)(SDL_GetTicks() - prevTime)) / ((float)1000.0f); 27 //deltaTime = ((float)(SDL_GetTicks() - 0)); 28 29 SDL_RenderPresent(render); 30} 31

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

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

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

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

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

episteme

2022/08/18 12:47

> ミリ秒の整数値からfloat型のミリ秒を取得したい。 int から float にキャストするだけじゃなくて?
退会済みユーザー

退会済みユーザー

2022/08/18 12:48

そうすると値が0になってしまので100ミリ秒だったら0.100秒にしてほしいのです。
episteme

2022/08/18 12:51 編集

なんで? intの100をfloatにキャストすれば 100.000 ですよ? 0にはならんですよ?
退会済みユーザー

退会済みユーザー

2022/08/18 13:05

間違えました。すいません。
episteme

2022/08/18 13:40

つまり 解決した んですか?
guest

回答1

0

100ミリ秒だったら0.100秒にしてほしいのです。

msec/1000.0
1000で割ればいいのでは

投稿2022/08/18 14:37

y_waiwai

総合スコア87963

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

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

退会済みユーザー

退会済みユーザー

2022/08/19 04:19

以下ようにして実装したのですがなぜか物体の進み具合がガクガクなのですがこれはなぜでしょうか? deltaTime = (float)(SDL_GetTicks64() - prevTime) / 1000.0f; prevTime = SDL_GetTicks64();
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問