鬱だ氏のう DirectX (Part 9)
■ このスレッドは過去ログ倉庫に格納されています
0001998 ◆oqSJWu4Ch2
NGNG技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。
ちなみに、言語はC++がメイン。
C# / VB.NET 使いは、専用スレの方が話がスムーズに進むと思われ。
0002998 ◆oqSJWu4Ch2
NGNGPart 1 http://piza.2ch.net/tech/kako/966/966655286.html (迷子)
Part 2 http://pc2.2ch.net/tech/kako/997/997101556.html
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html (ゲ製作板)
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html (ゲ製作板)
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/ (ゲ製作板)
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/ (ゲ製作板)
Part 7 http://pc2.2ch.net/test/read.cgi/gamedev/1039509250/ (ゲ製作板)
Part 8 http://pc2.2ch.net/test/read.cgi/gamedev/1046676308/ (ゲ製作板)
/** 外部 **/
MSのDirectX関連ページ
- DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.asp
- MSDN>DirectX
http://www.microsoft.com/japan/msdn/directx/default.asp
- DirectX Info Lib (デバイス情報のデータベース。すばらしい!)
http://www.netsphere.jp/dxinfo/
- BBX(掲示板)
http://isweb8.infoseek.co.jp/computer/bbx/
- spin
http://spin.s2c.ne.jp/
- 宇治社中改(3D基礎講座)
http://www.cc.rim.or.jp/~devilman/
0003998 ◆oqSJWu4Ch2
NGNG- DirectX C# vol.1
http://pc2.2ch.net/test/read.cgi/tech/1040435898/
- vb.NETでやるDirectX
http://pc2.2ch.net/test/read.cgi/tech/1039357620/
- Direct3D
http://pc2.2ch.net/test/read.cgi/tech/1011762546/
- DirectShowと戦うスレ
http://pc2.2ch.net/test/read.cgi/tech/1026666092/
- OpenGL VS Direct3D
http://pc2.2ch.net/test/read.cgi/tech/1044308707/
- C++相談室 part19
http://pc2.2ch.net/test/read.cgi/tech/1052625846/
- ★初心者にVisual C++を教えるスレ★ Part6
http://pc2.2ch.net/test/read.cgi/tech/1052931903/
- Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG1000ワラタ
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGゲ制作技術
http://pc2.2ch.net/gamedev/
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGこっちへ誘導しろよ。
鬱だ氏のう DirectX (ゲ製作技術避難所)
http://bbs.gamdev.org/test/read.cgi/gamedev/1054109966/
0013デフォルトの名無しさん
NGNGおつかれ、なんかこっちでやるのは懐かしい気すら
0014デフォルトの名無しさん
NGNGまあ、ゲ製板避難所のスレと平行してやってくってことで。
0015工房って高校生?
NGNGサンプルやヘルプ、WinAPIバイブルと格闘して初期化して何も描画しないプログラム
(Tutorialの01と同じ結果になる物)を組んで見ました。
一応、Libryにしたいので処理を分けて組みました。
VC++6.0 DirectX9 Win2000環境です。
一瞬上手く行ってる見たい何ですが、テストアプリケーションを落すと
Clearメソッドで例外ハンドルを指してデバッグモードになってしまいます。
これってアプリケーション実行中はINVALIDCALLを返してないので
開放時の問題でしょうか?
悩む事三日目の悩める高校生です。どなたか助けて下さい。
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGどこにどう処理をわけたのかわかんなきゃ答えようがない質問だと思うんだが。
0018デフォルトの名無しさん
NGNGここら辺りがよくわかりませんな。
0019工房って高校生?
NGNG処理を分けたってのは、初期化してグラボの性能みてデバイス制作部分(関数単位)
とClearだけ実装した関数、Presentだけ実装した関数、Windouwsの処理部分
各オブジェクトをReleaseする部分と分けたのです。
つまり、ソースファイルなりLibなりをプロジェクトに組み込めば
関数単位で呼び出してアプリを構築出来る様にしたいのです。
で、Clear部分は、Libraryのglobal領域にZバッファやステンシルを使用したかの
フラグがありそれを見て適応したクリアーを呼び出してるのです。
引き数にXRGBの型を渡せるようにしてあり、任意のカラーでクリアできます。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG六つのチュートリアルをすべてやってみたほうがいいと思うけど。(すでにやってたらスマン)
>>アプリを終了させると、、、
WM_DESTROYメッセージでどんな処理をしてるの?
g_pd3dDevice->Clear(...); はどこで処理してます?
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGうまく設計されている可能性はゼロ
0025デフォルトの名無しさん
NGNG安心しろ、誰もパクらんからw
0026デフォルトの名無しさん
NGNGどれが出来が良いのかな?この板(スレ?)的にお勧めが
あったら教えてください。
0027工房って高校生?
NGNG親身な問い、辛口問い、でしたが一人で詰まっていたら解決しなかったです。
ちなみに、問題は設計でした。
Windowsのメッセージ処理で各オブジェクトを開放したあとも
一回だけClear,begin,end,presentが回ってしまい
Clearの呼び出し前に!NULLの条件を付けたら問題はなくなりました。
勿論、beginやpresentにも付けてなかったです。
精進が足りないみたいです。
ちなみにVCはもっと精進が足りません、MFCはチンプンカンプンで
デバッカで変数の値やアドレス追う程度しか使えません。
0028デフォルトの名無しさん
NGNGよほど高度な機能があってサポートが期待できない限り、
(ぶっちゃけ市販のゲームエンジンほどに)
DirectXを生で使うのが一番いいんじゃないかと愚考します。
0029デフォルトの名無しさん
NGNG同意。
質問文からはどの程度の機能があればいいのかもサッパリわからんしね。
そこそこいいんじゃないか、と思うのがLuna。
ttp://www.twin-tail.jp/
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGただしそれは自分が使うために機能をまとめることであって、
それをわざわざ他人にしてもらう必要性がないということ
0032デフォルトの名無しさん
NGNGさすがにシーンクラスは作るけど……。
0033デフォルトの名無しさん
NGNGCD3DApplicationに不満を覚えて自分でフレームワーク作ったけど、頭痛いトラブル続出で、
ほぼ安定した今でも素直にCD3DApplication使ったほうが苦労がなくて済むんちゃうかと
揺れてる今日この頃。
003426
NGNG生で使うのは難しくはないでしょうか?
というか知り合いにそういう風に脅されてまして。
C言語は一通り勉強してて、UNIX上で小さなゲームやら
システムやら開発したことはありますが、Windowsプログラミング
に関しては素人で、DirectXもまだ扱ったことがありません。
いずれは自力でDirectXのコードを書く予定なので、それくらいなら
はじめから自分で勉強して自力で記述した方が良いんですかね?
003526
NGNGありがとうございます。
どの程度の機能というのも難しいですが、
ある程度汎用的で、将来自力でやることを踏まえて
良い勉強になるようなライブラリが良いですね。
って要求多すぎっすか?すんません・・・。
最近のDirectXは使いやすいのでしょうか?9.0とか。
あと、皆さんははじめはどのように勉強しました?
マイクロソフトのドキュメントをゴリゴリ読んでいった
んでしょうか?それとも書籍やネットで勉強したんでしょうか?
参考までに教えてくださると嬉しいです。
0036デフォルトの名無しさん
NGNG俺simpleXっていうライブラリ使ってるんだけど
超初心者の俺でもめっちゃつかいやすいよ
あんたもつかってみ
http://www.geocities.co.jp/SiliconValley-SanJose/8134/
0038デフォルトの名無しさん
NGNG本はI/OのDirectX8実践プログラミングがある。周りで評判が良いので買った。
この本は大まかな指針を提示してくれるので、DirectX入門にはよいと思う。
でもDXSDKのヘルプやサンプルが最高の教科書。後はネット上のサンプルなど。
もし3Dデビューしたいのなら、Direct3Dを叩いて勉強するのが一番だよ。
3Dやってく上での問題はAPIの形式じゃないから。
0039デフォルトの名無しさん
NGNGということでしたら、まずはWindowsプログラミングに慣れることから
初めてはいかがでしょうか。
私もはじめてWindowsのコードを見たときは難しそうだなと思いましたが、
Petzoldを読み始めてからは、意外と簡単に感じるようになりました。
DirectXに関しては公式の日本語ヘルプで十分だと思います。しかし、
このヘルプのコードを理解するには、Windowsプログラミングの知識が必須です。
004026
NGNGWindowsプログラミングの知識が必須ですか・・・、
頑張って勉強しようと思います。38さんの仰る本も
今度見てみようと思います。勉強しなければいけないことが
たくさんあるなぁ。早くみなさんの会話についていけるように
頑張りたいです。
0041デフォルトの名無しさん
NGNGhttp://www.ascii.co.jp/pb/msp/36001/36001.htm
004226
NGNGわお、わざわざありがとうございます。このスレの
人たちはホント親切で感動しますた!
個人的にはあの有名な猫でも〜のサイトでも読むか、あの人の
書いた本でも買ってみようかと思ったんだけど、41のがいいっすか?
買ってみようかな。それにしても高い・・・。なんでこんなプログラミング
関係の本とかアホみたいに高いんだろう・・・。書籍もアカデミック版
とか出してくれ・・。
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGWindows Media Player 9 で、avi ファイルとか再生して、
そのあと更に別のファイルを見ようと、ファイルを Media Player 9 に投げると、
必ずといっていいほど、"ASSERT Failed" というダイアログが出てくる。
DirectShow あたりのソースコードでアサートに引っかかってるみたいなんだけど……
(ちなみに、Media Player 6.4 での再生だと出てこない。)
更に、MIDIシーケンサの「Sonar 2.1」で、VSTプラグイン等を設定しようとすると、
やっぱり似たような アサートダイアログが出てくる。
正直鬱陶しい。
DirectX コンパネでの、デバッグ出力レベルをすべて Less にしても出てくるし、
Retail 版のランタイムを使用する設定にしても出てくる……
……これって、どうにかならんのですかね?
004626
NGNG一応あったが・・、1989年出版って・・、初版かいな!
ある意味貴重かもしれないけど。
>>43
図書館に頼んだら入れてくれますかね?
0047デフォルトの名無しさん
NGNG図書館によると思われ
>>45
解決方法知らないから力になれんが、こっちも参考に見てみるといいかも。
ttp://pc2.2ch.net/test/read.cgi/win/1053402028/l50
ttp://www.experts-exchange.com/Networking/Broadband/DSL_Cable/Q_20294228.html
004826
NGNGpetzold。高かった・・・。まぁ先行投資だと思って頑張ろう。
DirectXへの道のりは遠いのであった・・・。
スレ違いスマソ。
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGhttp://www1.free-city.net/home/s-rf9/page002.html
0051工房って高校生?
NGNG8.xの頃のFVFは使い方は分るのですが、VERTEXELEMENT構造体についてです。
頂点データの構造体を宣言して、一つの構造体で座標や法線やUVなどを扱う場合に
VERTEXELEMENT構造体に値をセットする方法は、ストリームを0指定、offsetでストリームを区切ってくと
考えて宜しいのでしょうか?
またその場合(データタイプの宣言時)、実際の頂点バッファサイズ(頂点数)はコーディングするまで未定ですね?
つまりFVF時代は出来た、良く使う宣言をヘッダーに宣言しておいて使うってような感覚で
良く使う組み合わせのVERTEXELEMENT構造体を予め宣言しておくって出来ませんよね?
(offsetが未定の為)
どなたか御講義お願いします。HELPだと上記の理解が精一杯です。
0052デフォルトの名無しさん
NGNG後者はできる。実体をどこかのcppで定義してヘッダでexternなど。
でもそんなことをする必要があるかどうかは疑問。
毎回シェーダにあわせて専用の形式を作ればいいんでは?
0053デフォルトの名無しさん
NGNG全然
0054デフォルトの名無しさん
NGNGスキンメッシュ作成のサンプルってどこかにないですかね。
Xファイルから読み込むやつじゃなくて、
メッシュを新規にスキンメッシュ化する方法で。
ID3DXSkinInfoがうまく動いてくれないんだよ。
0055デフォルトの名無しさん
NGNG自力で頂点の重み付けをしたい、ってこと?
そんなのはLightWaveとかに任せちゃえばいいと思うんだが。
ていうか、D3DXで出来ないことを実装したいのならともかく、何か不満があるの?
基本的なことは大体出来る気がするんだがなあ。
0056動画2音声
NGNGさっそく質問ですが、
DirectShowサンプルとして提供されている
WavDestというフィルタを拾ってきました。
そして、「REGSVR32.EXE wavdest.ax」でフィルタ
の登録もでき、GraphEditで使用できるようになりました。
そこで、CLSIDを定義してプログラム上からフィルタグラフ
マネージャを利用してWavDestフィルタを呼び出したい
のですが、なにをどうしていいかわかりません。
初歩的な質問でもうしわけないですが、
ご教授おねがいします。
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG(゚Д゚)ノ < シェーダ
| ⊃| \__________
| |
⊂ノ〜
∪
0060デフォルトの名無しさん
NGNG名前を変えればバレないかな?
VC++を買う踏ん切りがつかん、、、
0061デフォルトの名無しさん
NGNG再配布パッケージを使いなよ
0062デフォルトの名無しさん
NGNGっていうか、なぜデバッグ環境のを配布せにゃならんのだろう。
0063デフォルトの名無しさん
NGNG不覚にもワラタ
0064デフォルトの名無しさん
NGNGdirectx9 sdkについているdirect graphicsのsampleを
実行すると一瞬だけウインドウが表示されてその後消えてしまいます。
何が原因なのかさっぱりわからずに困っています。
誰か教えてもらえないでしょうか?
0065デフォルトの名無しさん
NGNGそのくらいの情報量じゃ、当人でない人から見たらお手上げだよ。
0066デフォルトの名無しさん
NGNG65に同意。
ただ「消えます」って言われてもねぇ。
0067デフォルトの名無しさん
NGNGDWORD m_Pointsize = 4;
hr = m_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT)
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(DWORD*)&m_Pointsize);
として描画しようとすると、描画時に
Direct3D9: (INFO) :Result of drawing primitives with D3DFILL_POINT fill mode
and point size not equal 1.0f could be different on different devices
と出ます。
REFの場合、正しく描画されますが、HALの場合は1ポイントで頂点が描画されます。
HAL時にD3DCAPS9.MaxPointSizeを調べ、64でしたので、HALの制限ではないと思います。
「ポイントサイズが1じゃないと、他のデバイス上で描画結果が異なるかも」
というのは分かったので、この情報がもうでないようにする方法と、
HALで正しく表示させる方法に、心当たりがあれば教えてください。
0068デフォルトの名無しさん
NGNGDWORD じゃなく float でサイズ指定しないとまずいのでは?
006967
NGNGhr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(FLOAT*)&m_Pointsize);
と、やってみましたが、だめでした。
また、ヘルプに
「Direct3DDevice9::SetRenderState メソッドは DWORD 値を使うため、
次のコードに示すように、アプリケーションでは値を格納した変数を
キャストしなければならない。
pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&PointSize));」
と書いてるので、ここが原因ではないと思います。
0070デフォルトの名無しさん
NGNGD3DFVF_PSIZE あたりが臭いような。
何の根拠もないけど……w
007154
NGNGいや、Mikotoもどきを作ろうとしているんだよ。
それに動的なボーンの追加、変更とかをやりたいんだ。
LightWaveは高いって。
MikotoがXファイルに出力してくれれはいいんだが。
0072デフォルトの名無しさん
NGNGSetRenderStateのプロトタイプの型がDWORDだからfloatで直接渡せないので
型を騙してコンパイルを通すようにしているだけ
float値が必要なのにDWORDの値を送ったら正常に動かないのは当たり前
少しは考えろ
0073デフォルトの名無しさん
NGNGんー、それは要するにハードウェアが対応してないってことでは?(w
MAXPOINTSIZEって、もしかするとポイントスプライトの時専用だったりするとか、
そういうことはないかね。
>>68
そのままだとDWORDに暗黙変換されるから、ああやってメモリイメージ渡すのよ。
>>71
自力で頂点重み付けをしたいと。。。
ぶっちゃけその辺のサンプルは見たことがないっす。
しらみつぶしに頂点に最も近いボーンに関連付けさせるしかないんでは…
もちろん、二つのボーンに影響しそうな部分は適当にブレンドして。
Gemsにスキニングの話があったような気がしないでもないなぁ…。
0074デフォルトの名無しさん
NGNGいや、だから本人はそうやっていたんでは?
68が言ってるからわざわざ試しただけで。
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG書いてあることを考えようともしていないだろう
それとも説明されても分からないほど馬鹿なのか?
floatの構造を持つデータをDWORD型と騙してプロトタイプを回避するように、
ヘルプにも書いてあるだろ
>>68が言っていることを試したって、やっていることを全然はき違えている
>>67の段階で
>DWORD m_Pointsize = 4;
何故この程度の間違いに気が付かない?
007769
NGNGfloatm_Pointsize;
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(DWORD*)&m_Pointsize);
floatm_Pointsize;
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(float*)&m_Pointsize);
DWORDm_Pointsize;
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(DWORD*)&m_Pointsize);
は試しました。
だめだったけど。
0078デフォルトの名無しさん
NGNGFAQのような気がしますが、答えを見つけられなかったので質問させて下さい。
画面サイズは640x480を考えています。
以前は、テクスチャサイズが2のn乗でなければならないという制限があったと
思うのですけれど、試してみたところ640x480のテクスチャでも表示できてい
ます。(DrawPrimitiveでテクスチャを描画しています。)
DirectXが新しくなって、テクスチャのサイズの制限がなくなったのではと少
し期待しているのですが、これは、たまたま私のビデオカードで表示できてい
るだけで、ビデオカードによっては表示されない場合があるのでしょうか?
以前のDirectXのマニュアルには「テクスチャサイズは2のn乗にしろ」という
ような記述があったような気がするのですが、DirectX9のマニュアルでは見つ
けられません。
007968
NGNG正しいのは一番上のやつです。
>DWORD m_Pointsize = 4;
だけ見て書き込んじゃったけど
エラーメッセージ見てみたら D3DFILL_POINT がまずいんじゃない?
D3DFILL_SOLID でやってみるといいかも。
0080デフォルトの名無しさん
NGNG申し訳ないが適当にソースを読んでたのが悪かった。
だからってなんでそーいう攻撃的な発言するんだ。
正しいこと言っててもそれじゃ敵を作るだけだ。
>>77
floatで宣言した変数をDWORDに代入すると暗黙の変換が起こるだろ?
ソレを避けるためにFLOATのメモリイメージを77の一番上の方法で渡すの。
>>78
nVidiaの一部のドライバが2^nじゃないテクスチャにも対応していたらしい。
やっぱり2^n制限はあるから2^nで作るとよいです。
0081デフォルトの名無しさん
NGNG会社や学校で嫌われていないかい?
0082デフォルトの名無しさん
NGNGD3DPTEXTURECAPS_NONPOW2CONDITIONALでヘルプを検索。
0083デフォルトの名無しさん
NGNG2ch中毒、疑心暗鬼
>>81
不毛
0084デフォルトの名無しさん
NGNG008578
NGNG>>82
ありがとうございました。モヤモヤしていたのがクリアになりました。
うちは、ATI RADEON9000なのですが、DirectX Caps Viewerで見ると、
確かに D3DPTEXTURECAPS_NONPOW2CONDITIONAL がついていました。
やはりテクスチャを分割して組み合わせないといけないということですね。こ
ういう場合、皆さんはあらかじめグラフィックファイルを256x256などに分割
したりしているのでしょうか?それとも、ファイルを読み込んでから、分割し
てテクスチャにコピーしているのでしょうか?
D3DXCreateTexture系の関数で手抜きをするとなると、後者は難しそうですね。
この辺をうまくラップしてくれるようなスプライトライブラリは公開されてい
ないですかねぇ。なければ自分で作るしかないですが。
0086デフォルトの名無しさん
NGNG拡大フィルタだったかなんだったか忘れたが、その辺の設定をするべし。
分割して組み合わせってのは、テクスチャメモリを効率よくさせたいということかね?
それは普通はめんどくさいから、画面サイズより大きなテクスチャを確保する。
例えば640*480の画面に一枚絵を張りたいなら1024*512のテクスチャを用意。
流石に256*256が限界なVGAは無視してもかまわんと思う。
そのようなVGAはちょっと古すぎだし、3Dのサポートもままならん。
008778
NGNGD3DCreateTexture*Ex()で、Width,Heightを1024,512にして、Filterを
D3DX_FILTER_NONEにして、テクスチャ座標を
(0., 0.)-(640./1024., 480./512)にして期待通りに動きました。
これでずいぶん楽になります。
あとで、他のビデオカードでもうまくいくか、試してみます。
テクスチャ座標の誤差が出て、ピクセルが欠けたりしないかちょっと心配して
しまいますが、3DのAPIっていうのはこういうものなのでしょうね。
基本的な質問に、重ね重ねありがとうございました。
008886
NGNGピクセルは点のように思えがちだが、面積を持つ正方形ということらしい。
だから640*480の画面のスクリーン座標は(-0.5,-0.5)-(639.5,639.5)になる。
008986
NGNG(-0.5,-0.5)-(639.5,479.5)だぜ
鬱死
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGあとはグラフィックプロセッサがどうラスタライズしてるかですな。
>>89のようにちゃんと座標合わせてフィルタ切っておけば
まず100%正確な描画は保証されると思う。
バイリニアでもたしか各ピクセル±1〜2くらい誤差が出たと思ったけど、
見た目で分かるほどではない。
0092デフォルトの名無しさん
NGNG「This program uses the reference rendering device.
Your computer has a reduced-functionality reference device installed.
You can still use this program to manipulate textures, but the textures will not be visible in this program.
Install the DirectX SDK to install the reference device.」
というコメントが出ます。翻訳したところ、
「テメーの状態では全ての機能が使えない。SDK入れろ」と言われているようです。
DirectXSDK8.1bを入れているのですが、まだ何か足りないのでしょうか?
0093デフォルトの名無しさん
NGNGOpenGLのプログラムをDirectX9に移植しています。
作業はおおむね順調で、大部分はすんなり移植できたのですが、
2つほど問題にぶつかってしまいました。
1. DrawPrimitiveで D3DPT_LINESTRIP をかくときに、 線種/線幅は
どうやって指定するのでしょうか? 線種に関しては、DirectXのヘッダをのぞくと
D3DLINEPATTERN なんてのがあってそれっぽいことができそうなのですが・・・
線幅はまったく情報がつかめませんでした。
2. テクスチャに関しても DrawPrimitiveUP のように メインメモリのデータを
直接テクスチャとして貼り付けることはできないのでしょうか?
現在は pTex->GetSurfaceLevel()で取り出したサーフェスに対して
D3DXLoadSurfaceFromMemory() を呼び出していますが、
OpenGLに比べてだいぶ遅くなってしまいました。
(OpenGLで glBindTextureを毎回呼び出したときぐらい遅い)
開発環境は VC++です。以上、よろしかったらご教授お願いいたしますです。
0094デフォルトの名無しさん
NGNG2→CreateTextureでD3DUSAGE_DYNAMICを指定すると、動的テクスチャを作ることができます。
ただ、D3DPOOL_DEFAULTなんかと一緒に指定しなきゃいけなかったり制約があるので、
その辺はヘルプを参考にしてくらはい。
0095デフォルトの名無しさん
NGNGピクセルが欠けたりはしないけど、色が微妙に変わってしまうことがあるから
100%正確ではないな。32bitカラーでRGB値が1小さくなったりする。(GeForce)
>>93
Direct3Dでは線種/線幅の変更は不可能。
線種はテクスチャで、線幅はポリゴン化して自分で処理する必要有り。
DX9ならID3DXLineがやってくれるから、そっちを利用するのがいいかと。
それと、メインメモリのデータをテクスチャとして貼ることもできない。
必要なら毎回転送しないと駄目。
D3DXLoadSurfaceFromMemoryはピクセルフォーマットの変換をしながら
1ピクセルずつCPUが更新していくから、フォーマットの変換がいらない
場合はUpdateTextureかUpdateSurfaceで転送した方がいい。
(メインメモリ側のバッファもTextureやSurfaceにする必要有り)
頻繁に更新するテクスチャはD3DUSAGE_DYNAMICを指定するのも忘れずに。
009693
NGNGまだ触り始めて1週間ぐらいの感想ですが、
OpenGL も DirectX も一長一短がありますね。
でも、DirectX の方がローレベルなところまで細かく制御できて
面白いです。
ちなみに、その他のOpenGLオンリーの便利機能は
・セレクション/フィードバック
・ディスプレイリスト
あたりかと思ってますが、あってますかね?(DirectXにももしかしたらあります?)
本当にセレクションがないとしたらちょっと残念。
0097デフォルトの名無しさん
NGNGことになってる。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100工房って高校生?
NGNG3Dモデルを空間内で座標変換しビュウ画面にスキャンラスタライズして描画する部分の説明を読んでると
座標変換やシェーディングしたojbectのピクセル単位の描画などは、
とても簡単に実装できるようになってると思います。
DirectDrawとの比較は分りません。8.1からのヒヨッコ世代ですので。
0101デフォルトの名無しさん
NGNG持ってる人とかURL知ってる人とかいたら教えてくれませんか?
おながいします。
■ このスレッドは過去ログ倉庫に格納されています