問題タブ [directdraw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ActiveX HWND, DirectX WindowLess mode
I would like to render video in ActiveX control (not in pop-up DirectShow window). I have:
I would like to set WindowLess mode, but I don't know how to get HWND of..., exactly, of what? IEFrame, HTML element?
Anyone with some hint?
Regards.
video - DirectDraw はストリーミングで Direct3d よりも優れていますか?
少し背景を指定させてください。
現在、オープン ソース プログラムを使用して TV チューナー (DScaler) を実行しています。このソフトウェアの最終バージョンでは、Direct3D 出力がある程度サポートされていますが、これに伴う問題は遅れることです。DirectX のレンダリングが DirectDraw と同じくらい滑らかになるように、コードを最適化する場所を見つけようとして、コードを調べ、DirectX のドキュメントを読みました。ソフトウェアには重要な表示ルーチン (ロック バッファー、ロック解除、フリップなど) のプロファイリングが組み込まれているため、Direct3D を使用する場合に問題が発生するポイントはオーバーレイ フリップ部分にあることがわかっています。D3Device への表示が遅すぎて、テレビ チューナーのキャプチャに追いつかないという結論に達しました。その結果、フレームが失われ、29 fps で表示されません。
私は DirectX についてよく知らないので、私の質問は次のとおりです。Direct3d は、ビデオ キャプチャを表示するための最適なオプションではないのでしょうか。それとも、単にコードが最適ではないことが問題なのですか? いくつかのストリーム (つまり、Xfire) でキャプチャを表示できるように、それを機能させる方法を見つけることにまだ興味があるので、質問します。
ありがとう。
opengl - sdlリモートデスクトップ
簡単なデモプログラムの場合、SDLライブラリを使用してmpegムービーファイルを再生しています。
残念ながら、デモアプリはWindows 7サーバーの1つで実行する必要があり、リモートで確認する必要があります。
問題は、RDPを介してサーバーに接続すると、ムービーが再生されても(音が聞こえます)、SDLウィンドウが黒のままになることです。
これは、リモートデスクトップ経由でアクセスする場合のOpenGLまたはDirectDrawのレンダリングデバイスと関係があると思います。RDP経由でも機能するようにSDLウィンドウを設定するために使用する必要がある設定を誰かが知っていますか?
Windows Media Playerで映画を再生すると、映画が正しく表示されます-どのようなデバイスがメディアプレーヤーを使用していますか?
documentation - DirectDraw のドキュメントはどこにありますか?
レガシー アプリケーションを管理しているので、IDirectDraw::SetCooperativeLevel 関数のドキュメントを探す必要があります。(いいえ、Windows CE の MSDN ページはそれをカットしていません。) MSDN にも、最新の DirectX SDK ドキュメントにもありません。Microsoft を見回して、Web サイトからすべての DirectDraw ドキュメント (および古い SDK) を削除しました。
ランダムな Web サイトから古い DirectX SDK インストーラーをダウンロードする前に、DirectDraw のドキュメントを見つけるためのより良い場所を誰か知りませんか?
winapi - 配列からのRGBデータでウィンドウを繰り返し埋める最速の方法は何ですか?
私は現在、簡単なゲームを書いています。私のグラフィックコードはフレームごとに1回(1秒間に約30回)実行され、670 * 480=307200エントリの配列にRGBデータを書き込みます。
正確に640x480ピクセルのサイズのクライアント領域を持つWin32ウィンドウを作成しました。空のウィンドウ内にRGBデータを表示するための最速の方法は何ですか?
ウィンドウはフレームごとに更新する必要があるので、ちらつきを避ける必要があります。これにはGDIを使用する必要がありますか?または、別のライブラリ(DirectDrawなど)を使用したより高速なアプローチはありますか?
編集:
すべての返信をありがとう。まず、オプションとしてDirect2Dを除外します。WindowsXPをサポートする必要があります。第二に、私は3Dのバックグラウンドを持っているので、YannRaminとBenVoigttoによって提案された方法(Direct3D / OpenGLと単一のテクスチャクワッドを使用)は、これまで常にこれを行ってきた方法です。
しかし、2DAPIがより良いソリューションになるかどうかを知りたいと思いました。明確な答えがないので、テストプログラムをまとめました。このコードは、フレームバッファを画面にできるだけ速く繰り返し表示するだけです。
このフォローアップ質問の一部として結果を投稿しました。
winapi - GDIを使用して、配列からのRGBデータでウィンドウを繰り返し埋めてみませんか?
これは、この質問のフォローアップです。私は現在、簡単なゲームを書いていますが、ちらつきやその他のアーティファクトなしに、RGBデータの配列をWin32ウィンドウに(繰り返し)表示するための最速の方法を探しています。
前の質問への回答では、いくつかの異なるアプローチが推奨されましたが、どれが最速であるかについてのコンセンサスはありませんでした。そこで、テストプログラムをまとめました。このコードは、フレームバッファを画面にできるだけ速く繰り返し表示するだけです。
これらは、32ビットビデオモードで実行されている32ビットデータについて私が得た結果です-一部の人々を驚かせるかもしれません:
これらの数字を考えると:
- なぜ多くの人がGDIがこの操作には遅すぎると固執しているのですか?
- SetDIBitsToDeviceよりもDirectDrawまたはDirect3Dを好む理由はありますか?
これは、各Direct*コードパスによって行われた呼び出しの簡単な要約です。DirectDraw / Direct3Dをより効率的に使用する方法を知っている人がいる場合は、コメントしてください。
c# - WinCE5.0 で PInvoke DirectDraw を使用しようとすると、「パラメーターが正しくありません」
CE5.0 システムで DirectDraw を機能させることに関して、私はしばらくの間問題を抱えていました。Windows Moblie で動作させるためのコードをようやく見つけました。いじりながら、コードを適切にコンパイルすることができました。
Windowsフォームへのハンドルを使用してインスタンスを作成することで正常に実行されますが、次の方法でシステムの機能を確認する場合:
「パラメーターが正しくありません」という例外が発生します。これをコメントアウトすると、後の関数でもこの例外が発生し、PInvoke のどこかに問題があると思われますが、CE5.0 DirectDraw に関する情報が非常に限られているように見えるため、どこを検索すればよいかわかりません。現在、関数をインポートしています
ただし、エラーは次のようなインターフェイスからのみ発生するようです
私がフォローしている記事で、これまでで最高の結果が得られたもの (および、ベースラインとして試みたコードを使用している記事) はこちらです。私のコードは以前は異なっていましたが、コードの何かに問題があるかどうかを確認するために着実に変更を加えてきたので、現時点では実質的に同じです。
問題の原因、CE5.0 を介して DirectDraw に関する情報を探す必要がある場所、または私がひどく間違っていることへのポインタについての支援をいただければ幸いです。
追加情報: 私が取り組んでいるデバイスは、D3D がオプションではないカスタム フレームワークですが、DirectDraw がサポートされ、2D ハードウェア アクセラレーションが利用可能であるというボード メーカーからの情報があるため、問題にはなりません。
c++ - DirectDrawCreateで「LNK2019未解決の外部シンボル」を解決する
私は先週、DirectDrawをCE5.0フレームワークで機能させることを試みてきましたが、いくつかの非常に奇妙な問題に直面しています。
コードにこの関数を含めると、次のようになります。"error LNK2019: unresolved external symbol _DirectDrawCreate referenced in function "bool __cdecl DirectDrawInit(struct HWND__ *)" (?DirectDrawInit@@YA_NPAUHWND__@@@Z)"
関数自体は.hに存在します。直接ジャンプできるため、ライブラリが不足していると思いますが、リモートCE5.0用に構築されているため、これを確認または修正する方法がわかりません。端末。また、LR_CREATEDIBSECTIONや他のLR定数が存在せず、タイプのわずかな違い(HBITMAPが好まれず、LPCWSTRが好まれる)など、何かが欠けているという他のいくつかの微妙なヒントに遭遇します。
どんな援助でも大歓迎です。注意点として、WindowsMobile5.0コードはデバイス上で機能しません。問題のある関数をコメントアウトすると、コードがコンパイルされて実行されます(DirectDrawCreateは重要なので使用されていませんが、LNKエラーはなくなります)
c++ - レガシー DirectDraw コードの置き換え
昨日、何年も前に C++、Win32 API、DirectDraw 7 で開発された自分の Tetris ゲームのソース コードを見つけました。最新のDirectX SDK (2010 年 6 月)には DDraw.h と DDraw.lib が含まれていないため、ソリューションを構築しようとしましたが、成功しませんでした。もっと。
コードを DirectDraw から新しい API にアップグレードするための推奨される方法はありますか? それとも、単に古い DirectX SDK をインストールする必要がありますか?
windows - 2DゲームのほとんどのWindowsバージョンをターゲットにしますか?
ほとんどのバージョンのWindows用にゲームをコーディングする場合、どのAPIを使用する必要がありますか?
DirectDrawはNT4以降で動作することを知っています(DirectDrawはNT4でGDIを使用してエミュレートされていますが)。ただし、DirectDrawは新しいバージョンのWindowsでは非推奨であると言われていますか?
GDIだけに戻すこともできますが、バッファ間を切り替えるダブルバッファリングがないため、ちらつきやティアリングを完全に排除することは困難です。
Direct3DまたはDirectDrawを使用する必要がありますか?または、GDIのちらつきを完全になくす方法はありますか?
Direct3Dが答えである場合、ほとんどのプラットフォームでサポートされているバージョンはどれですか?