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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0809
ミント画像処理の DirectX13解決


ミント

リンク

2010/8/9(Mon) 20:03:51|NO.34312

どーもお久しぶりです。そうでない方は初めまして。


あれから画像のDirectXを使おうと思いましたが、どうもうまくいかず・・・
画像?を出せたり、思うように指定ができなかったりで非常に悩んでいます。
サイトを探してみたりググッてみましたが、自分の納得いく結果がありませんでした。


画像の方は、なんかバグ?って表示されます(マザー2のラスボスみたいなかんじ?)
指定の方は、今は1つの画像にまとめてあって
例えば

gmode 20,20,8 gcopy 2,237,241
みたいなかんじで出せるようになっていますが、DirectXではうまく指定できませんでした。


その2つがうまくできないのです・・・・
以下プログラム
------------------------------------------

#include "hmm.as" DDINIT ;初期化 DDSCREEN 640, 480, 1 ;ウィンドウを作ります。 ;p1のスクリーンを出力先に設定します。 DDGSEL 1 ;指定したファイル名の画像を読み込みます。 DDLOADFNAME "素材7.bmp" ,0 ;コピーしたい矩形領域を設定 DDSETRECT 0 ,0 , 60, 60 ddredraw ;更新
-----------------------------------------------
それではよろしくお願いします。



この記事に返信する


check

リンク

2010/8/9(Mon) 21:02:06|NO.34313

なにか機械翻訳で訳したような不自由な日本語に見えるのは俺だけだろうか・・・
>自分の納得いく結果
は自分しか知らないのだから、もっと詳しく説明したらどうだ。
読み取れたのは、
「GDIの描画だとうまく画像が表示されたけど、DirectX使ったらなんかうまくいかない。」
ぐらいの曖昧なものだけだ。



f3d

リンク

2010/8/9(Mon) 21:25:27|NO.34314

使ってるプラグインについても書いては?
hmmというプラグインはhsp3には標準で同梱されてませんよね?



ミント

リンク

2010/8/9(Mon) 21:49:39|NO.34315

>checkさん
>自分の納得いく結果
>>は自分しか知らないのだから、もっと詳しく説明したらどうだ。
最初に書いてあるとおり、DirectXを使って画像を出したいのです。

しかしそれがうまくいかず、画像自体は出せるんですが画像が変でした。
それと素材の画像の中から、出したい画像を出したい

の2つです。


>>読み取れたのは、
>>「GDIの描画だとうまく画像が表示されたけど、DirectX使ったらなんかうまくいかない。」
>>ぐらいの曖昧なものだけだ。
ひとことで言えばそうです。
わかりにくくすいませんでした。



ミント

リンク

2010/8/9(Mon) 21:53:54|NO.34316

>>f3dさん


>>使ってるプラグインについても書いては?
すいません。すっかり書き忘れてました。
プラグインは「HSP MULTIMEDIA( hmm.dll ) 1.42」です。



引き続きよろしくお願いします。



f3d

リンク

2010/8/9(Mon) 22:17:09|NO.34317

導入するのがめんどくさいので
想像でアドバイス。

画像のサイズを縦横、2の累乗(2,4,8,16,32,64,128,256,512,1024)にして実行してみんさい。



ORZ

リンク

2010/8/9(Mon) 22:25:17|NO.34318

マニュアル1000回読め、と言いたいところだが読めてるようなら
こういう質問は来ないか。

DDREDRAW 引数なし 機能 スクリーン0番の画面を更新して反映させます。 この命令を使用しない限り画面に結果が反映されません。 ;例) ddinit ddscreen 320, 240, 1 ddgsel 1 ddloadfname "sample.bmp", 2 ddgsel 0 ddpos 0, 0 ddsetrect 0, 0, 64, 64 ddgcopy 1 ddredraw ;これで初めて画面が更新される。

って書いてあるけど貼られたコードはいくつか抜けてるんでないの?
マニュアル読んだだけだから動作無保障。



ミント

リンク

2010/8/9(Mon) 22:48:57|NO.34320

>>f3dさん
>>画像のサイズを縦横、2の累乗(2,4,8,16,32,64,128,256,512,1024)にして実行してみんさい。
2倍数のあれですね。

やってみましたが特に何も変わりはなかったです・・・
アドバイスありがとうございます。


後画像がどうなっているか載せておきます。
http://www.dotup.org/uploda/www.dotup.org1081720.bmp



ミント

リンク

2010/8/9(Mon) 22:58:27|NO.34322

>>ORZさん
>>DDREDRAW 引数なし
〜〜略〜〜
>> ddredraw ;これで初めて画面が更新される。

>>って書いてあるけど貼られたコードはいくつか抜けてるんでないの?
確かにいくつか抜けてますが、画像の出力だけ確認するなら必要がないものがあるので
それを抜きにしました(プログラムを出すときのマナーとして)

例:ddpos 0, 0
画像の表示場所を決めるだけなので今は必要はない。

アドバイスありがとうございます。



以前から調べていますが、現在も調べながらやっておりますが
何かが足りないような気がしますので、そこらへん探してみます。

ですが引き続きお願いしたします・・・orz



晩御飯

リンク

2010/8/9(Mon) 23:47:33|NO.34324

残念な事に、マニュアルを読めと言わざるを得ません。

ddgredrawの前に

ddgsel 0 ddgcopy 1
を入れて下さい。
必要な命令まで消されている様に思います。

更に言えばddbgcopy命令の前にddboxf命令を入れてやるとよろしい。



ORZ

リンク

2010/8/10(Tue) 00:21:26|NO.34325

俺が貼り付けたサンプルのどの命令がどんな機能を果たすのか1つずつ全部説明しろ。
そしてお前が取り除いた命令が本当に必要ないものなのか確認しろ。

マニュアルは見るな。読むな。暗記するな。理解しろ。
大雑把に把握したらF1連打しながら作れ。



ミント

リンク

2010/8/10(Tue) 07:43:54|NO.34326

>>晩御飯さん
>>残念な事に、マニュアルを読めと言わざるを得ません。
マニュアルなら沢山読んでいますが、なかなか理解できなくって・・・



>>必要な命令まで消されている様に思います。
確かに、必要な命令まで消されているかもしれないので見直してみます。

アドバイスありがとうございます



ミント

リンク

2010/8/10(Tue) 08:46:08|NO.34327

>>ORZさん
>>俺が貼り付けたサンプルのどの命令がどんな機能を果たすのか1つずつ全部説明しろ。

#include "hmm.as" ;初期化します ddinit ;これでDirectXが使えるようになります ;スクリーンを作成します。 ddscreen 320, 240, 1 ;x,y,0 (p3)最後0以外ならウィンド、それ以外ならフルスク ddgsel 1 ;スクリーンを出力先に設定 ddloadfname "素材7.bmp", 2 ;画像を読み込み ddgsel 0 ;スクリーンを出力先に設定 ddpos 0, 0 ;文字や画像を表示したい座標を設定 ddsetrect 0, 0, 64, 64 ;コピーしたい範囲を設定します ddgcopy 1 ;DDPOSで指定した座標にコピーします ddredraw ;スクリーン0番の画面を更新
こんなところでしょうか?
まだまだ初心者なのでいたらない部分があると思います。


>>そしてお前が取り除いた命令が本当に必要ないものなのか確認しろ。
確認したら

ddgcopy 1 ;DDPOSで指定した座標にコピーします
っとあったので「DDPOS」が必要なものだとわかりました。申し訳ないです・・・



アドバイス等ありがとうございました。
もうちょいプログラムをいじくりながら調べつつ、解決まで導きたいと思います。
ん〜もうちょいだと思うんだけどなぁ〜・・・何が足りないんだろう



ミント

リンク

2010/8/10(Tue) 08:59:49|NO.34328


#include "hmm.as" ;初期化します ddinit ;これでDirectXが使えるようになります ;スクリーンを作成します。 ddscreen 320, 240, 1,2 ;x,y,0 (p3)最後0以外ならウィンド、それ以外ならフルスク ddgsel 1 ;スクリーンを出力先に設定 ddloadfname "素材7.bmp", 2 ;画像を読み込み ddgsel 0 ;スクリーンを出力先に設定 ddpos 0, 0 ;文字や画像を表示したい座標を設定 ddsetrect 0, 0, 64, 64 ;コピーしたい範囲を設定します ddgcopy 1 ;DDPOSで指定した座標にコピーします await 10 ddredraw ;スクリーン0番の画面を更新
みたいなかんじで、awaitを入れたら画像が表示されました・・・
なんかこんなことで質問した自分が情けない。

後はこれをメインプログラムに組み込めるようになればおkかな。


皆様にご迷惑をおかけしまして申し訳ございませんでした。
それとアドバイス等ありがとうございます!



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