HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0815
kona24bitのDIBって遅くない?22解決


kona

リンク

2014/8/15(Fri) 13:54:41|NO.63836

質問とかではなく雑談です。

HSP標準で使われているビットマップは24bitのDIBセクションなのはご存知だと思います。、
最近のビデオカードは32bitのみで24bitをサポートしてないからなのか32bitに比べてすごく遅い気がします。
特に画面の更新(redraw 1)は激遅な感じです。
興味本位なんですが皆さんのPC環境ではどうなのか試させてもらいたいです。
以下のスクリプトを試して結果を張り付けてもらえないですか。


#include "gdi32.as" #include "user32.as" #include "kernel32.as" wx=800 wy=600 vx=1 vy=1 fc=0 fend=0 screen 0,wx,wy SetTimer hwnd,1,1000,0 oncmd gosub *OnTimer,0x0113;WM_TIMER st="24bitDIB: " t2=ptimer() repeat redraw 0 color 255,255,255 boxf 0,0,wx,wy color circle px,py,px+60,py+60 px+=vx py+=vy if px<=0 | px>=wx-60:vx=-vx if py<=0 | py>=wy-60:vy=-vy redraw 1 await 0 fc++ if fend:break loop cls txt= strf("24bitDIB: fps=%.f\n",fps1) txt+= strf("32bitDIB: fps=%.f\n",fps2) txt+= strf("DDB: fps=%.f\n",fps3) txt+="\n" dim dv,106 dv=424 dupptr dvstr,varptr(dv)+36,128,2 repeat EnumDisplayDevices 0,cnt,varptr(dv),0 if stat==0:break if dv.41&4{ txt+=dvstr+"\n" break } loop dim devm,31 devm.9=124 EnumDisplaySettings 0,-1,varptr(devm) txt+=""+devm.27+"*"+devm.28+"*"+devm.26+"\n" mesbox txt,wx,wy stop *OnTimer if ct=2{ t1=ptimer() c1=fc } if ct=5{ fps1=double(fc-c1)/(ptimer()-t1) chgbm 32 st="32bitDIB: " } if ct=7{ t1=ptimer() c1=fc } if ct=10{ fps2=double(fc-c1)/(ptimer()-t1) chgbm 0 st="DDB: " } if ct=12{ t1=ptimer() c1=fc } if ct=15{ fps3=double(fc-c1)/(ptimer()-t1) fend=1 KillTimer hwnd,1 } fps=double(fc-c2)/(ptimer()-t2) c2=fc t2=refdval title st+strf("fps=%.1f",fps) ct++ return #deffunc chgbm int bpp mref bm,67 if bpp==0{ GetDC 0 hdisp=stat CreateCompatibleBitmap hdisp,bm.1,bm.2 hnewbm=stat ReleaseDC 0,hdisp bm.5=0 }else{ dupptr bminfo,bm.6,40 wpoke bminfo,14,bpp bminfo.5=0 CreateDIBSection 0,bm.6,0,varptr(bm.5),0,0 hnewbm=stat } SelectObject hdc,hnewbm DeleteObject bm.7 bm.7=hnewbm bm.67=(bm.1*bpp+31)/32*4 bm.16=bm.67*bm.2 return #defcfunc ptimer if freq==0{ freq=0.0 : qtime=0.0 QueryPerformanceFrequency varptr(freq) freq=double(strf("%I64u",freq)) } QueryPerformanceCounter varptr(qtime) return double(strf("%I64u",qtime))/freq



この記事に返信する


Satio Soft

リンク

2014/8/15(Fri) 13:57:10|NO.63837

結構速かった手すよ



ぴょぴょ

リンク

2014/8/15(Fri) 14:02:36|NO.63838

こちらは Windows Vista でメモリは2GB、2.53GHzの環境です。

●結果報告
24bitDIB: fps=224
32bitDIB: fps=268
DDB: fps=291

NVIDIA GeForce 7100 / NVIDIA nForce 630i
1440*900*32



新入り

リンク

2014/8/15(Fri) 14:16:40|NO.63839

なるほど為になりました。

os : windows 7
cpu : core i7 3770k 3.5GHz
ram : 16GB

24bitDIB: fps=1144
32bitDIB: fps=4003
DDB: fps=4068

NVIDIA GeForce GTX 660 Ti
1920*1080*32



テンクス

リンク

2014/8/15(Fri) 14:21:58|NO.63840

ちょっとパソコンする機会ができたので。
64bitパソコンです(^^ゞ
OS:Windows8
CPU:i7-3630QM 2.4ghz
RAM: 8GB

24bitDIB: fps=263
32bitDIB: fps=1938
DDB: fps=2138

Intel(R) HD Graphics 4000
1366*768*32



Satio Soft

リンク

2014/8/15(Fri) 14:31:24|NO.63841

****実験結果****
24bitDIB: fps=106
32bitDIB: fps=137
DDB: fps=134

Mobile Intel(R) 945 Express Chipset Family (Microsoft Corporation - WDDM 1.0)

OS:Windows8.1
CPU:Intel(R) Celeron(R) 430@1.15GHz



ヒラギノ

リンク

2014/8/15(Fri) 14:36:27|NO.63842

Windows 7 64bit
Intel Core i5 3470S 2.90GHz
8.00GB

24bitDIB: fps=266
32bitDIB: fps=2289
DDB: fps=2337

Intel(R) HD Graphics
1280*1024*32

でした。



MonoChrome

リンク

2014/8/15(Fri) 14:45:41|NO.63843

Windows7 Home Premium SP1
CPU AMD Athlon(tm) II P340 Dual-Core Processor 2.20GHz
メモリ4GB

【結果】
24bitDIB: fps=382
32bitDIB: fps=515
DDB: fps=528

ATI Mobility Radeon HD 4200 Series
1366*768*32



mirage17

リンク

2014/8/15(Fri) 15:11:50|NO.63844

CPU : Intel Core i5-3570K [3.40GHz/4Core/HD4000/TDP77W] IvyBridge 搭載モデル
MEMORY : 8GB DDR3 SDRAM PC-10600 [4GB*2枚/メジャーチップ・6層基盤]
OS : Microsoft(R) Windows8 (64bit)DSP版
VGA : GeForce GT640 1GB [DVI/D-Sub/HDMI]


24bitDIB: fps=309
32bitDIB: fps=1267
DDB: fps=2506

NVIDIA GeForce GT 640
1920*1080*32

この結果はどうかな?
こんなもんかな?cpuもi7でないし、
グラボも2GBないからこんなもんかな?
HSPプログラムコンテスト2014のネット審査員
として作品鑑賞と、評価に使用しているPCなんだけどね。



kona

リンク

2014/8/15(Fri) 15:30:42|NO.63845

皆さんありがとうございます。
やっぱり環境によって結果がだいぶ違いますね。
8倍くらい変わる場合もあればあまり変わらない場合もあるんですね。
でもだいたい32bitの方が高速みたいですね。
ビットマップを変更したらgmodeが0以外使えなくなるんですが、その辺のライブラリを何とかできれば、hgimgとかの使い方を覚えなくても高解像度でさくさく動くゲームとか作れるかもしれないです。

あと意外なのはDDBの場合の違いがほとんど無いところです。
VRAMをメインメモリと共有するタイプならそうなるとは思ってたんですが、外付けタイプのビデオカードだと高速なVRAM上にビットマップが作成されてDirectX並の速度が出るとおもってたんですが。
mirage17さんの結果はそうなってるみたいですがそれ以外ではあまり変わらないですね。
まあDDBだとメモリにアクセスできないのであまりゲームとかには向かないんで関係ないですが。

ともかく皆さんありがとうございます。
いろいろと参考になりました。



kei

リンク

2014/8/15(Fri) 17:06:55|NO.63846

もう終わっちゃったかな?

*結果*
24bitDIB: fps=165
32bitDIB: fps=1223
DDB: fps=1244

Intel(R) HD Graphics Family
1366*768*32

およそ7.5倍も速くなってますね!
見てるだけでも実感できるほどで"おおー速い!!"ってなりました。



pippi

リンク

2014/8/15(Fri) 23:33:50|NO.63850

24bitDIB: fps=297
32bitDIB: fps=3136
DDB: fps=2760

AMD Radeon HD 7700 Series (HD7750 GDDR5 1GB)
1920*1080*32

HSPの高速化に期待です



きのよー

リンク

2014/8/15(Fri) 23:52:32|NO.63851

24bitDIB: fps=178
32bitDIB: fps=641
DDB: fps=701

Intel(R) HD Graphics
1920*1080*32

Windows7 Home Premium SP1 64bit
RAM:4GB
Intel Pentium B970 @2.3GHz

VAIOのノートパソコンですが、結構な違いが出てくるのですね。
HDMIで出力してChromeもタブ8個開いているので相当遅めな方ですが、
「無視できない値」かもしれないですね……。



kanahiron

リンク

2014/8/16(Sat) 00:51:34|NO.63854

24bitDIB: fps=312
32bitDIB: fps=3034
DDB: fps=2932

Intel(R) HD Graphics 4000
1920*1080*32

CPU内蔵GPUですがDDBの方が遅くなったので珍しい例ですかね
HSPで外部プラグインなしにアルファチャンネルを扱えるようになればものすごい捗るのですが…



skyblue

リンク

2014/8/16(Sat) 08:50:00|NO.63855

24bitDIB: fps=287
32bitDIB: fps=1278
DDB: fps=1280

Intel(R) HD Graphics
1280*1024*32

hsp3.4
24bitのほうが早い



kanahiron

リンク

2014/8/16(Sat) 09:57:20|NO.63861

FPSってフレーム パー セカンド(一秒あたりのフレーム数)なので
数字が大きいほうが早いですよ?



ZAP

リンク

2014/8/17(Sun) 09:27:47|NO.63869

化石みたいなPCですが、参考までに。

WindowsXP SP3
AMD Athron 64 Dual
RAM 2GB

24bitDIB: fps=406
32bitDIB: fps=565
DDB: fps=1410

AMD RADEON HD 6450
1280*1024*32



リンク

2014/8/17(Sun) 09:52:56|NO.63870

os : windows 7 Professional 32bit版
cpu : core i5-3570 3.4GHz
ram : 4GB

24bitDIB: fps=558
32bitDIB: fps=4741
DDB: fps=4524

NVIDIA GeForce 9800 GT
1920*1080*32

だいぶ差が出ました。
内部には詳しくないのでよくわかりませんが仮にHSP標準で使うビットマップが
32bitになると大幅な速度アップになるという事でしょうか。



GOMEKIT!

リンク

2014/8/17(Sun) 11:20:57|NO.63872

<基本情報>
Maker:dynabook BX/31KKS
OS:Windows 7 Home Premium 32bit
CPU:2.20GHz
Memory:2GB/4GB

<実行結果>
24bitDIB: fps=260
32bitDIB: fps=338
DDB: fps=87

Mobile Intel(R) 4 Series Express Chipset Family
1366*768*32



Satio Soft

リンク

2014/8/17(Sun) 12:08:59|NO.63874

再度実験した結果
<PC情報>
OS:Windows8.1 Enterprise
CPU:Intel® Celeron® Inside 430@1.73GHz
Memory:1.50GB
<システムの構成>
32bit Operating System,x86 Type Processor
<実験結果>
24bitDIB: fps=120
32bitDIB: fps=153
DDB: fps=149

Mobile Intel(R) 945 Express Chipset Family (Microsoft Corporation - WDDM 1.0)
1024*768*32



名無し(A)

リンク

2014/8/17(Sun) 12:12:43|NO.63876

24bitDIB: fps=283
32bitDIB: fps=3071
DDB: fps=3054

NVIDIA GeForce GTX 760
1920*1080*32
OS windows7 Home Premium 64bit
RAM 16GB
CPU i7-2600
圧倒的な早さですね・・・



kona

リンク

2014/8/17(Sun) 14:36:41|NO.63886

皆さんご協力ありがとうございます。

>>撃さん
>内部には詳しくないのでよくわかりませんが仮にHSP標準で使うビットマップが
>32bitになると大幅な速度アップになるという事でしょうか。
ボール一個表示するだけのシンプルな内容なので顕著な結果が出てる部分もあると思います。
もっと複雑なゲームとかになるとどうなるかはやってみないとわからないですが、それでも結構な速度アップにつながる可能性は高いと思います。
でも今更HSPのビットマップを32bitに変更するのは難しいかなとも思います。
gmodeの更新とか大幅な変更が必要になりそうですので。
HSP DishみたいにDirecxXベースの描画システムへの進化が正しい方向な気もしますし。



GOMEKIT!

リンク

2014/8/17(Sun) 14:38:58|NO.63887

仕切り直しで本日二回目の測定

<実行結果>
24bitDIB: fps=209
32bitDIB: fps=289
DDB: fps=271

Mobile Intel(R) 4 Series Express Chipset Family
1366*768*32



ONION software Copyright 1997-2021(c) All rights reserved.