一度に各ビットを見てみましょう。
プログラミング、特に C または C++ によって、画面上の各ピクセルを個別に制御することは可能ですか?
おそらく。これは実際にはグラフィックス アーキテクチャに依存し、多くの最新のシステムでは、実際の画面の表面 (つまり、「画面に表示されるピクセルの集まり」) は直接ソフトウェアの制御下にあるわけではありません。少なくとも「ユーザーモード」からではありません (つまり、あなたまたは私が作成できるアプリケーションから - ドライバー コードを作成する必要があり、既存のグラフィックス ドライバーと十分に連携する必要があります)。
データをオフスクリーン バッファに描画し、BitBlt [BitBlockTransfer] 関数を使用してコンテンツを画面にコピーすることが、この種のことを行うための好ましい方法であると一般に認められています。
したがって、実際には、画面上の各ピクセルを操作することはおそらくできませんが、そうであるように見せることはできます。
現在の画面のドライバを特別に制御する必要がありますか?
画面メモリに直接アクセスできると仮定すると、コードは確かにドライバーと協力する必要があります-そうでなければ、画面に表示したいものが他の何かによって上書きされないと誰が言いますか[たとえば、完全にしたい]画面へのアクセス、およびクロックアップデーターは、描画したものに加えて、1分ごとに画面上の時間を更新します]。
大きな「フレームバッファ」として画面メモリにアクセスできる「穴」があるモードにドライバを設定できる場合があります。Windowsでこれを行う簡単な方法はないと思います。2003 年から 2005 年にかけてグラフィックス ドライバーを書いて生計を立てていたときのことを覚えていません。
ピクセルを変更できるオペレーティング システムはありますか (たとえば、すべての上にメッセージ/オーバーレイを描画します)。
最新のグラフィックス カードのハードウェアでオーバーレイ レイヤーを作成することは絶対に可能です。これが一般的なビデオ再生のしくみです。ビデオは、他のグラフィックスの上にオーバーレイされるフレームバッファ メモリの一部に再生されます。ドライバーの助けが必要です。これは、私が覚えている限り、DirectX を介して Windows API で確実に利用できます。
それとも、WindowsはおそらくWinApiでこれをサポートしていますか?
おそらくですが、正確に答えるには、あなたが何をしようとしているのかをよりよく理解する必要があります.
編集:あなたの特定のユースケースでは、音を鳴らしたり、CD / DVDドライブを取り出したりする方が適切なオプションかもしれないと思っていたでしょう。ゲームで描画されたグラフィックスの上に何かを重ねるのは難しい場合があります。ゲームは、利用可能なグラフィックス リソースをできるだけ多く使用しようとすることが多いためです。単純なユースケース - 異なる描画/エンジン/グラフィックス ライブラリを使用する複数の異なるカテゴリのゲームで機能するものは気にしないでください。最近のCPUは過熱にかなり耐性があるため、過度に心配する必要があるかどうかも完全にはわかりません。そのため、CPUは遅くなり、停止する可能性がありますが、ヒートシンクを取り外しても壊れません。 、うまくいきません [いいえ、これを試すことはお勧めしません!]