int Bmp[][] = {
// R G B
{0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF},
{0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00},
{0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF},
};
// 元画像(4×4)
// 青透透青
// 透青青透
// 透青青透
// 青透透青
上記のような、C++の配列にコンバートした、画像ファイルがあるとします。
DirectX9にて、
この画像を、四角ポリゴンにテクスチャとして貼り付け、
RGB成分すべてが、0x00になっている部分を透明にして表示したいです。
どのようにしたら実現できそうか、
適当な資料や、良い関数等があったら、教えていただけると幸いです。
コンバートするためのツールは、自作の物なので、配列側の仕様を変えることは可能です。
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
各メソッドの戻り値のチェックは省略しています。
// ARGB 画像バッファ。
const D3DCOLOR texImgSrcBuf[4][4] =
{
0xFF0000FF, 0x00000000, 0x00000000, 0xFF0000FF,
0x00000000, 0xFF0000FF, 0xFF0000FF, 0x00000000,
0x00000000, 0xFF0000FF, 0xFF0000FF, 0x00000000,
0xFF0000FF, 0x00000000, 0x00000000, 0xFF0000FF,
};
IDirect3DDevice9* pDevice;
IDirect3DTexture9* pTexture = NULL;
// ARGB テクスチャの作成。
pDevice->CreateTexture(4, 4, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pTexture, NULL);
D3DLOCKED_RECT lockRect = {};
pTexture->LockRect(0, &lockRect, NULL, D3DLOCK_DISCARD);
// ここでテクスチャ ARGB を、D3DLOCKED_RECT::pBits(と D3DLOCKED_RECT::Pitch)を使って書き込む。
// 今回はサイズが2のべき乗なのでコードを簡略化する。
memcpy(lockRect.pBits, texImgSrcBuf, sizeof(texImgSrcBuf));
pTexture->UnlockRect(0);
あとは任意のポリゴンにテクスチャをマッピングして、アルファ ブレンドを有効にしてレンダリングするだけです。テクスチャ マッピングやアルファ ブレンディングに関しては、Webにいくらでも資料が転がっているので、ご自分で検索してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 角丸画像の背景色を透明にしたいです 1 2023/06/23 23:15
- DIY・エクステリア 中古住宅をリノベーションしながら暮らしてます。 玄関に、写真のようなアンティーク調の門灯があるんです 3 2022/05/16 21:36
- 画像編集・動画編集・音楽編集 gimp or photoscapeXで背景画の透明度を変える方法 5 2022/12/20 14:13
- バーベキュー・アウトドア料理 「川がきれいになり過ぎている」という噂は事実ですか。 5 2022/08/21 08:17
- Photoshop(フォトショップ) 【至急】 ウェブサイトやアプリとかでよく見かける、添付画像のように背景にあるものをぼかしつつ透過する 2 2023/07/17 10:57
- その他(ソフトウェア) ペイントで切り抜いた画像の背景を透明に 2 2022/09/15 10:20
- 皮膚の病気・アレルギー 指先が膿んだ 2 2023/07/20 11:24
- クラフト・工作 形の良い松ぼっくりを拾って、しっかり乾かして、汚れを綺麗に落として、黒い塗料で塗って、乾かして、透明 1 2023/01/09 18:50
- 画像編集・動画編集・音楽編集 画質を落とさず切り取って透過したいです 2 2022/06/08 12:28
- メガネ・コンタクト・視力矯正 クリアのコンタクトレンズって 少し青ですよね? 完全な透明なコンタクトってないのでしょうか 1 2022/11/23 01:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンキーボードで時分秒を...
-
変数を動的に作るには?
-
VB.net 引数で配列変数を渡す際...
-
VBAで配列の計算
-
For文と配列
-
IF関数でEmpty値を設定する方法。
-
VBでbyte配列型のインスタンス...
-
C言語 重複しない4ケタの乱数...
-
等間隔にベクトルを作成。(MAL...
-
複数のテキストボックスに同じ...
-
ジャグ配列とは
-
【MFC】GetCount()とGetSize()...
-
int型配列の一括初期化
-
EXCEL VBA で、0から?1から?
-
VBで作った乱数を一度も重複さ...
-
遅延バインディングを使用でき...
-
VBA 配列数式的に一括してR...
-
C言語のポインターに関する警告
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションのrepla...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
EXCEL VBA で、0から?1から?
-
IF関数でEmpty値を設定する方法。
-
変数を動的に作るには?
-
動的配列が存在(要素が有る)か...
-
C言語 重複しない4ケタの乱数...
-
VB.net 引数で配列変数を渡す際...
-
VBで作った乱数を一度も重複さ...
-
複数のテキストボックスに同じ...
-
VBでbyte配列型のインスタンス...
-
C#の質問
-
遅延バインディングを使用でき...
-
For文と配列
-
重複なしでランダムに画像を表...
-
配列の要素数を超えた参照のコ...
-
このプログラミングの問題を教...
-
Visual C++ でコントロールを...
-
Excel VBAで配列の途中から(X)M...
-
ジャグ配列とは
おすすめ情報