5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

▼処理・テク教えまスレッド!

1 :1 ◆rJvM9yDA :02/02/05 02:26 ID:cLLH4Y7u
言語問わず何でも教えあうスレッド。


・DirectXで文字を表示させる際にアンチエイリアスをかけるには?
・Delphiで画面の最大化の方法は?
・VBでチョメチョメ出来るの?
・CDDAをデジタル再生する方法は?
・PCM音声を複数同時に再生する方法は?(DirectSound未使用)
などなど

2 :1 ◆rJvM9yDA :02/02/05 02:28 ID:cLLH4Y7u
ちなみに自分はDelphiとCをちょろっとしか出来ないので完全にフォロー出来ないです。

昔DirectXやってたけど忘れちゃったし・・

3 :名前は開発中のものです。:02/02/05 02:48 ID:???
かえってDelphiだと難しそう。
というかPASCAL知らんし。

両方使える人にとって、PASCALとC言語ってどっちが使いやすいの?

4 :名前は開発中のものです。:02/02/05 03:29 ID:???
1が教えて欲しいだけちゃうんかと。

5 :名前は開発中のものです。:02/02/05 09:52 ID:???
>>3
慣れればCの方が楽。自由度高いので。
PASCALは言語としては洗練されてるので
教育用には適してるけど。


6 :名前は開発中のものです。:02/02/05 10:04 ID:Eig8ehal
winアプリの場合はDelphiの方がとっつきやすいかな。
Pascalが覚えやすいって言うよりボーランドソフトそのものが初心者にむいてる。
上級者にも十分使えるけど。

マイクロソフトの開発ソフトはわかりづらい。

7 :名前は開発中のものです。:02/02/05 12:16 ID:XPq7Zyqd
そうだったのか… C++Builder買っときゃ良かった。欝

8 :名前は開発中のものです。:02/02/05 12:37 ID:Eig8ehal
>>7
ビルダー6はフリーになるという噂だけど?
Linux版も出るし。

Delphi開発者を引っこ抜いて必死で作ったVisualStudio.netはいつ出るのかね?
ベータ2は相変わらず重いし、、


9 :名前は開発中のものです。:02/02/05 12:40 ID:???
Tips:
開発がせっぱつまってても風呂は入れ。
周りの奴の指揮が下がるからな!

10 :名前は開発中のものです。:02/02/05 14:21 ID:???
カイリクスはタダで使えるし、デルファイもそうだし、C++コンパイラもそうだし
信者増えるのではないかと期待

WINAPIがC++で書かれてるからパスカルは使い辛いかな、と思う
API使わないんだったら、デルファイでいいかと

11 :名前は開発中のものです。:02/02/05 14:47 ID:???
>>10
>API使わないんだったら、デルファイでいいかと

DelphiでもAPI使えるけど。
そもそもゲームってAPIに頼ることってあんまりないでしょ?
ShowMessageそのものがAPIだし。

12 :名前は開発中のものです。:02/02/05 15:22 ID:OEm3/ZAn
自分は1が言ってたDelphiでDirextX使用せずにフルスクリーンにする方法教えて欲しい。
解像度変更って言うの。

DelphiX使おうとしたけどDelphi6には未対応だし。
インストール方法ある?

13 : :02/02/05 15:34 ID:???
Delphiは知らんけど、普通にChangeDisplaySettingsじゃダメなんだろうか・・・。

14 :名前は開発中のものです。:02/02/05 17:27 ID:3Rp/SBJl
>>13
ChangeDisplaySettingsxはアイコンバラバラにならない?


15 : :02/02/05 17:39 ID:???
>>14
なるよ(;´Д`)。
でもDirectX使わずにフル画面にする方法って他に知らないしぃ。

16 :名前は開発中のものです。:02/02/05 17:41 ID:???
昔書いた物。捨てていくので、ツッコミ不可。
アイコンはバラバラにならない…ハズ

{
 ディスプレイのセッティングを変更するクラス
}

unit Dspsting;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TDisplaySettings = class(TObject)
private
dvmdOrig, dvmdRequest: TDEVMODE;
modifyFlag: Boolean;
public
constructor Create;
destructor Destroy; override;
procedure ReturnSettings; { 設定を元に戻す }
procedure ChangeSettings(w, h: DWORD);
end;

implementation

constructor TDisplaySettings.Create;
var
h: HDC;
begin
inherited Create;

ZeroMemory(@dvmdOrig, sizeof(dvmdOrig));
dvmdOrig.dmSize:= sizeof(TDEVMODE);
dvmdOrig.dmDriverExtra:= 0;
dvmdOrig.dmFields:= DM_PELSWIDTH or DM_PELSHEIGHT;

h:= GetDC(0);
try
dvmdOrig.dmPelsWidth:= GetDeviceCaps(h, HORZRES);
dvmdOrig.dmPelsHeight:= GetDeviceCaps(h, VERTRES);
dvmdOrig.dmBitsPerPel:= GetDeviceCaps(h, BITSPIXEL);
dvmdOrig.dmDisplayFrequency:= GetDeviceCaps(h, VREFRESH);
finally
ReleaseDC(0, h);
end;

dvmdRequest:= dvmdOrig;
modifyFlag:= FALSE;
end;

17 :名前は開発中のものです。:02/02/05 17:42 ID:l1G62Jtu

destructor TDisplaySettings.Destroy;
begin
ReturnSettings;
inherited Destroy;
end;

procedure TDisplaySettings.ReturnSettings;
begin
if modifyFlag = FALSE then Exit;
if ChangeDisplaySettings(dvmdOrig, CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL then
begin
MessageDlg('ディスプレイの設定変更に失敗しました', mtInformation, [mbOk], 0);
end;
modifyFlag:= FALSE;
end;

procedure TDisplaySettings.ChangeSettings(w, h: DWORD);
begin
dvmdRequest:= dvmdOrig;
dvmdRequest.dmPelsWidth:= w;
dvmdRequest.dmPelsHeight:= h;

if ChangeDisplaySettings(dvmdRequest, CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL then
begin
MessageDlg('ディスプレイの設定変更に失敗しました', mtInformation, [mbOk], 0);
end;
modifyFlag:= TRUE;
end;

end.

18 :名前は開発中のものです。:02/02/05 18:18 ID:???
そういえばアイコンの位置を全部覚えといて後で復元するってツワモノがいたな

19 :解像度変更:02/02/05 18:44 ID:3Rp/SBJl
どこのサイトか忘れたけどだいぶ前に自分がメモ帳に残しておいたやつ。
海外のサイトだったと思う。

function SetFullscreenMode:Boolean;
var DeviceMode : TDevMode;
begin
with DeviceMode do
begin
dmSize:=SizeOf(DeviceMode);
dmBitsPerPel:=16;
dmPelsWidth:=640;
dmPelsHeight:=480;
dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
result:=False;
if ChangeDisplaySettings(DeviceMode, CDS_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL then Exit;
Result:=ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure RestoreDefaultMode;
var T : TDevMode absolute 0;
begin
ChangeDisplaySettings(T,CDS_FULLSCREEN);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if setFullScreenMode then
begin
sleep(300);
RestoreDefaultMode;
end;
end;

20 :名前は開発中のものです。:02/02/05 19:57 ID:???
>12
マルチポストすんなヴォケ−
ム板で3分後に同じ質問してたのもお前だな。

21 :名前は開発中のものです。:02/02/05 20:10 ID:BW15aMwX
>>12
>DelphiX使おうとしたけどDelphi6には未対応だし。
>インストール方法ある?
ある。
本家の掲示板みろ。
俺は動かしたぞ

22 :名前は開発中のものです。:02/02/05 20:13 ID:???
WAVって複数鳴らすのってやっぱりDirectSoundしか無いのかな?
DirectX使って無くても複数再生してるゲームとかあるけど。

音楽はMIDI
音声はCDDA
効果音はWAVってやるしか無いのか?

MIDIとCDDA使いたくないし、、、


23 :名前は開発中のものです。:02/02/05 20:13 ID:???
>>20
それをたまたま発見しただけで大騒ぎしてる厨房

24 :名前は開発中のものです。:02/02/05 20:24 ID:???

       ヽヽ /
   \       /
                            ―
 --  23=12デシタ --     −     -        −  −‐− ―――
            ―    ‐        −             −−
   /        \      − -            -   −   ―       -  ―
     /  |   \            ―       −−   −        − ― ―
                ..,,,,,,.............................................,,..,    ―   -  ―   (⌒;:)
‐             /'"                  "'ヽ.                 −  ―
   ―         /"     |       /         "ヽ,('';:⌒⌒ヽ丶,..
            i   ○   | ̄ ̄ ̄/  ○        へ        ;;:: 〕   (⌒::;
  ‐ ‐   -      |        i   ..::/     。   ;:::/  :: :: : ::⌒ ̄""⌒ヾ
             !.       | :::::/| _ _。  ::::::::: /::: ; ": ̄  :::  :::::::::::)
  -     ―   ヽ       lヽ__ノ丿   ,,..:;::::::::::/:'(: : : ;;:;:      ⌒:;;⌒)
              \     し_/ .......::::::;;:;::::::/;:/:::: : :ノ;;::  :; :  ....:::::   .....  ::::ノ
-                  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄' ̄"" ̄" "  ̄ ̄ ̄"'""  ̄ ̄ ̄" '''' ̄'' ̄


25 :名前は開発中のものです。:02/02/05 20:53 ID:???
>23
マジレスで回答した後にこういうのを見つけると、
少なくともいい気はしないでしょ?まぁ、ただの煽りチャンなんだろうけど。

26 :名前は開発中のものです。:02/02/05 20:58 ID:???
age


27 :名前は開発中のものです。:02/02/05 23:23 ID:???
>>19のソースを使ってフルスクリーンを実現したのですが
フルスクリーンからウィンドウへの元に戻す方法がわかりません。


28 :名前は開発中のものです。:02/02/06 00:19 ID:WtK0cdVp
>>27
16のコードで行けるんじゃないの?

>>22
最近のサウンドカードは複数PCMストリーム再生サポートしてるから大抵大丈夫だとおもう。
どうやって同時再生するかはわからない。

自分はCDDAをデジタル再生する方法が知りたい




29 :名前は開発中のものです。:02/02/06 00:27 ID:sdOsCIHs
くちぱくをさせたいのだけど、どのくらいの感覚でぱくぱくさせれば
違和感かんじないの?



30 :名前は開発中のものです。:02/02/06 00:34 ID:???
>>22
昔Wavemix.dllって無かったか?
確かDirectX出る前からWaveを複数鳴らすことは出来たと思う

31 :名前は開発中のものです。:02/02/06 00:36 ID:???
急に口パクって言われても
たぶんアドベンチャーゲームだろうとは思うけど。

根性有るなら
第一水準文字全部をindex持たせてそれに併せて「あいうえお」の口の動きを割り振ってみては?

まあそこまでやらなくても普通にパクパクさせるだけでええでしょ

32 :名前は開発中のものです。:02/02/06 00:41 ID:sdOsCIHs
>第一水準文字全部をindex持たせてそれに併せて「あいうえお」の口の動きを割
>り振ってみては?
それが一般的な方法なんですか

音声にあわせて 口を動かすのが普通だとおもっていました
(母音を取得するのは難しくても、音量をみるとか・・・)


33 :名前は開発中のものです。:02/02/06 00:42 ID:???
>>22

こんなのもあるよ

DelphiDirectSound
http://www.delphi32.com/vcl/4734/

34 :1 ◆rJvM9yDA :02/02/06 00:45 ID:???
WaveMixはこちらから

ftpでログイン
ftp://x2ftp.oulu.fi/pub/msdos/programming/microsoft/
User:anonymous
pass:なし


35 :1 ◆rJvM9yDA :02/02/06 00:52 ID:???
Delphi用はこっちだ
http://www.programmersheaven.com/zone2/cat425/14637.htm

36 :27:02/02/06 01:59 ID:???
>>28

できれば>>19のコードでやりたいんです。
>>19のコードで元にフルスクリーンは出来るんですが元に戻す方法がわかりません。

戻す場合はやっぱりフルスクリーン前の解像度、色数を覚えさせて置かなくちゃダメですか?

>>19のコードはプログラムを終了すると勝手に解像度などが元に戻ってくれるんですが。
自分がやりたいのは任意に元に戻す方法ですけどね。

37 :名前は開発中のものです。:02/02/06 02:06 ID:???
ここってDelphiだけじゃ無いよね?

38 :名前は開発中のものです。:02/02/06 02:15 ID:???
http://cgi.members.interq.or.jp/hokkaido/asato/upload/jam3ddr/OB000076.gif
http://cgi.members.interq.or.jp/hokkaido/asato/upload/jam3ddr/OB000075.gif

 ↑

こういう処理をやりたいんですけど、どうやってやるんですか?
よくゲームとかの画面切り替えに見る処理なんだけど。


39 :名前は開発中のものです。:02/02/06 03:25 ID:???
PCMの複数再生って、単に足すだけでしょう。
クリップ(量子化ビット数をオーバーフローした)時の処理はよくわからないけど
MMXが使えるなら、飽和加算で十分じゃないかな。
話題がずれていたらスマソ。

40 :名前は開発中のものです。:02/02/06 03:30 ID:???
>38 ネタ?

41 :名前は開発中のものです。:02/02/06 04:03 ID:???
>>38
黒い板を複数用意して幅を変えるんでも良いし
マスクをかけてテキトーに変化させるもよし。
まぁ、好きに作れってこった。

42 :名前は開発中のものです。:02/02/06 10:48 ID:???
>>39
飽和加算だとだんだんと音がでかくなってくような…。アルファブレンドと同じでいいんでは?

43 :名前は開発中のものです。:02/02/06 13:13 ID:???
なんか盛り上がんないね。

44 :名前は開発中のものです。:02/02/06 14:19 ID:???
>>42
>アルファブレンドと同じでいいんでは?
いや、そんな簡単な物でもない気がするぞ。

ある音Aが -6dbの大きさでなっていたとする。
そこへ、別の音Bが -6dbで重なって鳴るとしたら?

飽和加算方式:A,Bの音量 それぞれ -6db
αブレンド方式:A,Bの音量 それぞれ -6dbの半分の音量 → -12dbずつ(合計すると -6db相当)

聴感上は、A,Bともに -6dbで聞こえる→飽和加算っぽい聞こえ方 のはずだ。
そもそも、別の音が重なるだけで、元の音量が小さくなるのは変じゃないか?

これ意外と面白いテーマかもしれないな。

ゲームサウンド
http://game.2ch.net/test/read.cgi/gamedev/1006770289/
こっちのスレにネタ振ってみるのも良いかもしれん。割と技術者なヤツ多いみたいだから。


45 :名前は開発中のものです。:02/02/06 14:21 ID:???
>>22
自力でMixすればよし。
MODのプレイヤーを参考にするといいよ。

>>42

なぜαブレンド?


46 :名前は開発中のものです。:02/02/06 14:58 ID:???
>>44
どうなんだろうね。
何も考えずにDirectSoundで多重再生させてる場合はうまく鳴ってるけど、自前
でMIXさせる場合も全く減衰とか考えないでいいのかな?
飽和加算だと、同じ音を2つ同時に再生する場合に単純に倍の音量で…鳴らな
い? それはそれでいいのか…。


47 :名前は開発中のものです。:02/02/06 15:34 ID:E/JERrYQ
おさわりシステムみたいなの作りたい

48 :44:02/02/06 16:04 ID:???
>>46
俺も普段は DirectSoundのミキサーまかせなので、意識したことは無かったよ。

ちょっと面白いなと思って自分なりに考えてみた仮説。
自前ミキサーの精度を高くする → ミキサーのビット数を大きく持つ
このくらいしか思い浮かばなかった。

元の波形=16bit/出力のバッファ=16bitだからといって、内部ミキサーも16bit精度で
計算する必要は無いよな?。だから、いったん内部24bit程度のミキサーにレンダリング
してミキシングする。24bitバッファの上位16ビットを最終出力とする。
内部24bitだったら、16bit波形が 256個同時に発音されたとしてもクリップはしないよな。

ただし、元の16bit精度の音が、実質8bit程度の音になってしまうという諸刃の剣。
減衰する音なんかは、おそらくジリジリ言うのではないか?と。

オーディオ方面はちょっと疎いから、この程度が限界だわ。スマン。


あと、同じ音が完全に同タイミングで発音されたら、振幅2倍だから音量はでかくなる。
それはそれで正解だと思う・・・・・んだが、自信無し。


49 :44:02/02/06 16:07 ID:???
書き忘れ。
24bitバッファの上位16bitを有効とするんじゃなく、
対数カーブで16bitに畳み込むというのもアリかもしれん。
音が重なっても、大きく聞こえにくくなる・・・・ってな感じで。


50 :46:02/02/06 16:47 ID:???
>>48-49
そーするとさ、例えばSTGなんかでボスが弾を20個一斉に撃っちゃうと発射音量
が20倍、畳み込んだとしても数倍になっちゃわない? 飽和するまではいかない
としても。
最大音量がない現実で弾を同時に20発撃ったら聞こえる音量も20倍になるって
のはわかるんだけど、最大0dbって決まっている場合だとマズくない?
やっぱαブレンドじゃダメかなぁ(´Д`)。

51 :46:02/02/06 16:50 ID:???
書き込むを押した瞬間に「同じ音は同時に鳴らさないってことにすればいいじゃん」
ってことに気づいた俺は逝ってきます。

52 :名前は開発中のものです。:02/02/06 17:01 ID:???
>>51
でもそれは根本の解決にはなってない。
波形合成のセオリーみたいなのキボンヌ。


53 :名前は開発中のものです。:02/02/06 17:09 ID:???
波形合成は基本的に加算でしょ。

54 :46:02/02/06 17:14 ID:???
>>53
んだね。
ここはゲームで鳴らすにはどうするかを考えてるんだし、>>48-49+>>51ってのも
アリだと思いたいな。

55 :名前は開発中のものです。:02/02/06 17:42 ID:???
ソフト的にリミッターでもかませばいいんでないかい。
合成結果が一定以上になったら波形を潰す。


56 :名無しさん◎書き込み中:02/02/06 17:49 ID:???
>>55
それを飽和加算といふ

57 :名前は開発中のものです。:02/02/06 17:55 ID:???
>>55
使えないプログラマは無視ということで。
↓次の意見どうぞ


58 :名前は開発中のものです。:02/02/06 17:59 ID:???
飽和加算ではみ出た分をちょん切っちゃうのはディストーションだっけ。
全然違う音になっちゃうよ。


59 :名前は開発中のものです。:02/02/06 18:15 ID:???
>>56-57
飽和演算するなぁ〜。ぶった切るのではなくて潰すの。
とりあえずリミッター&コンプレッサーの機能調べてみんさい。
餅は餅屋、オーディオについてはオーディオ畑を当たれ。


60 :名前は開発中のものです。:02/02/06 18:20 ID:???
「ぶった切るのではなくて潰す」の意味がよくわかんないけど、上で言ってるように
対数カーブ使って飽和させればそれっぽくなんないか?

61 :名前は開発中のものです。:02/02/06 18:28 ID:???
まあ、考え方としては同ベクトルやね。
いっちゃん簡単なやつなら、ここに載ってる程度のを実装すればオーケー。
http://www.doremi.co.jp/gakufu/attach.html


62 :44:02/02/06 18:53 ID:???
>>55=>>59
言いたいことは分かるよ。トータルリミッタかけろ!てことだろ?
でも、それだと飽和した「瞬間」に個々の絶対音量がガクッと下がるよな?
全体的にトレモロかかったたみいになって耳が疲れると思う。
それを緩やかに綺麗にやっているのが、L1とか T-Racksみたいなソフトだろ?

>>58
チョン切るのはディストーションで正解。

>>61
面白いページ紹介さんきゅ。
リニアでのリミット処理(しかも1段階)だと、音が「ポコポコ」してしまうんじゃないかな?
スレッショルドレベルをいくつか持たせて、なめらかに(気付かれないように)リミッティング
するのが理想だと思う。

その後いろいろ考えたんだが、24bitでのバッファリングは要らないな。
ゲームでの使用ならば、せいぜい20bit程度で充分だろう。
ビット数だけで見たら わずか16個の波形で飽和する計算だが、もともと波形は±0を基準として
プラス方向/マイナス方向に絶えず変化しているわけだし、常に最大音量で鳴っているわけ
でもないんだし、20bitだったとしてもクリップする瞬間というのは限りなく少ないと思われる。
(あくまでも机上論ではあるけど)。

あと、人間の耳は大きな音は小さく感じるような構造になっているから、もしかしたら
対数カーブでの畳み込みはいらないのかな?とも思ってみたり。

S/N比を稼ぎつつ、うまく合成するのって実は面白いかもな。
ていうか、オーディオは専門外なんだよー。詳しい人の降臨キボンヌ。


63 :専門外だけど:02/02/06 19:58 ID:???
http://www.xg.yamaha.co.jp/deliciousxg/06/6_07.html
この辺をみると、リリース時間を設定して圧縮状態から段々もとの音量に戻すような処理してるみたい?
というか、聞くならDTM板とかのほうが良いかもね。

64 :名前は開発中のものです。:02/02/07 05:54 ID:???
爆発音とかでかい効果音は、少々欠けても分からないし
重なっても濁るだけだから発音数制限しちゃってよさげ。
プライオリティ管理とか排他設定とかして、
リリース部分もちょん切りまくって。
(人間の脳ミソはほとんどアタック部だけで音を識別してるらしいから)

大抵のゲームはPCM数音ぶんあれば十分だと思ー。
んで念のためトータルリミッタかけて。この程度でいいんじゃないかな。


65 :名前は開発中のものです。:02/06/07 16:30 ID:???
      /⌒゛~ ̄ ̄ ̄\
    /  ____|\__\
    |_|   ⌒  ⌒ | ̄
      |∴  (・)  (・) |
      (6      つ  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      |   ___  | <  僕は間違ってなんかいないよ
       \   \_/ /   \_____________
         \___/    
         _〃`ヽ 〈_
     γ´⌒´-−ヾvーヽ⌒ヽ
    /⌒  ィ    `i´  ); `ヽ
    /    ノ^ 、_____¥____人  |
    !  ,,,ノ爻\_ _人 ノr;^ >  )
   (   <_ \ヘ、,, __,+、__rノ/  /
    ヽ_  \ )ゝ、__,+、_ア〃 /
      ヽ、___ ヽ.=┬─┬〈  ソ、
        〈J .〉、| 喧.|, |ヽ-´
        /""  | 嘩 .|: |
        レ   :| 屋 | リ
        /   ノ|__| |
        | ,,  ソ  ヽ  )
       .,ゝ   )  イ ヽ ノ
       y `レl   〈´  リ
       /   ノ   |   |
       l  /    l;;  |
       〉 〈      〉  |
      /  ::|    (_ヽ \、
     (。mnノヽソ ̄ ̄`ヽnm

24 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)