[過去ログ]
【3Dエンジン】Irrlicht初心者質問スレその4 (172レス)
【3Dエンジン】Irrlicht初心者質問スレその4 http://mevius.5ch.net/test/read.cgi/gamedev/1285057945/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
13: 名前は開発中のものです。 [sage] 2010/09/23(木) 18:08:04 ID:7XCQvY35 Irrlicht1.7.1を使っていて なぜか桁の大きいdouble型変数の演算時に小数部が切り捨てられていたので、原因を探ってみたところ どうやら irr::createDeviceの第一引数のレンダリング環境を設定するところでDirectX(EDT_DIRECT3D8及びEDT_DIRECT3D9)を指定するとこの現象が起きるようでした。 createDeviceを使用しなかったり、DirectX以外のOpenGLやソフトウェアレンダラを指定するとこの現象は起きませんでした。 原因や解決法を教えていただきたいです。。 C++自体初心者なので全く関係の無いところで勘違いしてるのかもしれませんが… なお以下のコードで現象を確認しました(test03が10000000.5になって欲しいのに10000000.0になる) #include <irrlicht.h> #include <windows.h> #pragma comment(lib, "Irrlicht.lib") using namespace irr; using namespace core; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { IrrlichtDevice *device =createDevice(video::EDT_DIRECT3D9, dimension2d<u32>(640, 480), 16, false, false, false, 0); double test01=10000000; double test02 = 0.5; double test03=test01+test02; device->drop(); return 0; } http://mevius.5ch.net/test/read.cgi/gamedev/1285057945/13
15: 名前は開発中のものです。 [sage] 2010/09/23(木) 18:35:03 ID:KkOS4/SK >>13 普通にDirect3Dデバイスを作ると、高速化のために内部で浮動小数点演算の精度が落とされる。 これを防ぐにはデバイス作成時にD3DCREATE_FPU_PRESERVEを指定すればいいんだけど、 irrlichtで出来るかはよく知らない。 ttp://msdn.microsoft.com/ja-jp/library/cc324349.aspx http://mevius.5ch.net/test/read.cgi/gamedev/1285057945/15
16: 名前は開発中のものです。 [sage] 2010/09/23(木) 18:47:30 ID:KkOS4/SK >>13 調べた。 irr::SIrrlichtCreationParameters::HighPrecisionFPU に true を設定して rr::createDeviceEx を呼べばいい。 そうすればD3DCREATE_FPU_PRESERVEを使ってくれる。 http://mevius.5ch.net/test/read.cgi/gamedev/1285057945/16
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.675s*