C#、DまたはJavaでフレームバッファを実装する簡単な方法を探しています。私が色の2次元配列で作業し、個々のピクセルまたは領域を更新できるようにする何か(APIまたはライブラリ)。また、更新時に大きなオーバーヘッドが発生しないものもあります。私はこれがOpenGLでできることを知っていますが、APIは私がやっていることに対してはあまりにも複雑すぎるようです。現代的な言語で効率的なフレームバッファを実装する簡単な方法は?
0
A
答えて
1
.NETで普通の古いSystem.Drawing.Bitmap
を試してみてください。 Bitmap.Lockbits()
を使用して、ビットマップの背後にあるバイト配列にアクセスし、それを更新することができます。これは、ビットマップ上の通常のピクセル操作よりもはるかに効率的です。操作の
private void LockUnlockBitsExample(PaintEventArgs e)
{
// Create a new bitmap.
Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");
// Lock the bitmap's bits.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);
// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap.
int bytes = Math.Abs(bmpData.Stride) * bmp.Height;
byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
// Set every third value to 255. A 24bpp bitmap will look red.
for (int counter = 2; counter < rgbValues.Length; counter += 3)
rgbValues[counter] = 255;
// Copy the RGB values back to the bitmap
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
// Unlock the bits.
bmp.UnlockBits(bmpData);
// Draw the modified image.
e.Graphics.DrawImage(bmp, 0, 150);
}
0
2次元配列の場合、C#ではすべてのメンバーに直接アクセスできるmultidimensional arrayを作成できます。これを効率的にするには、頻繁なボクシングとアンボクシングを避け、大容量のメモリチャンクを頻繁に割り当てたり割り当てを解除したりしてください。そうすれば、C#やJavaでは他の言語よりも効率が悪くなりません。
1
アレイは、大量のピクセルデータを繰り返して、完全な画面を表示するのに時間がかかります。非常に少ない量の反復を必要としないか、必要としないものを見つける方が良いでしょう。 Cのポインターのようなもの
関連する問題
- 1. Python/Numpyでさまざまな係数を持つ簡単なフィルタを実装する効率的な方法
- 2. 効率的な実装 - アンドロイド
- 3. Matlabの構造ではなく効率的な実装方法
- 4. LinuxでSikuliを使う現代的で簡単な方法
- 5. Chisel:効率的なワンホットマルチプレクサを実装する方法は?
- 6. 単語&シノニムテーブルを照会する最も効率的な方法
- 7. 単語のリストに「フック単語」を見つける効率的な方法は?
- 8. Webアプリケーションのテンソル分解を実装する最も効率的な言語
- 9. SQL効率的な方法を実装していない
- 10. トークンの単語を数える最も効率的な方法
- 11. ユニオンステートメントの効率的な代替方法
- 12. theanoでの効率的なカーネル実装
- 13. BlackListを実装する最も効率的な方法
- 14. VIEW(haml)でこの動的テーブルサイズを実装する効率的な方法
- 15. 効率的な方法は
- 16. は、効率的な方法
- 17. 効率的な方法は
- 18. 効率的なTableModelの実装
- 19. Zバッファの効率的な実装
- 20. Python、マルチスレッドIOの効率的な実装
- 21. ラッパークラスのC++効率的な実装
- 22. .netの効率的なトライ実装
- 23. アドレス帳の効率的な実装
- 24. スレッドコンソールウィンドウの効率的な実装
- 25. メジアンフィルタ超効率的な実装
- 26. 効率的な方法でPython上の単語発生のリストを実装する
- 27. 効率的なDataGridView代替
- 28. 効率的な代替
- 29. 多言語サイトのhreflangタグを実装する最も簡単な方法
- 30. run()を実装するうえで、効率的な方法は何ですか?
どのような種類:
MSDNは私がから貼り付けてきた例hereを持っていますか?画素の読み書きはアレイで簡単に行うことができます。これはすべてですか? – Euphoric