質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

データバインディング

データソースと、アプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術です。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

Q&A

0回答

944閲覧

DirectX11にて、テクスチャをファイルから読み込んで作成するのではなく、パックデータなどにまとめておいてバッファデータから作成したい。

HoshinoKann

総合スコア0

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

データバインディング

データソースと、アプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術です。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

0グッド

0クリップ

投稿2020/09/21 11:06

前提・実現したいこと

DirectX11でゲームを作成しています。
テクスチャの表示や音の再生等一通りの事は可能となり
データを1つにパッケージ化して必要部分を取り出す事も出来るようになったのですが
その取り出したデータを使ってテクスチャの画像を作成する方法が分かりません

該当のソースコード

所々端折ってはいますが { CoInitialize(NULL); IWICImagingFactory *pFactory = NULL; IWICBitmapDecoder *pDecoder = NULL; IWICBitmapFrameDecode* pFrame = NULL; CoCreateInstance(CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, (LPVOID*)(&pFactory)); pFactory->CreateDecoderFromFilename(wname, NULL, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &pDecoder);//ここで目的の画像ファイルを読み込んでいる pDecoder->GetFrame(0, &pFrame); pFactory->CreateFormatConverter(&m_pFormatConverter); m_pFormatConverter->Initialize(pFrame, GUID_WICPixelFormat32bppRGBA, WICBitmapDitherTypeNone, NULL, 1.0f, WICBitmapPaletteTypeMedianCut); m_pFormatConverter->GetSize(&m_nImgWidth, &m_nImgHeight); } { D3D11_TEXTURE2D_DESC texdec; texdec.Width = m_nImgWidth; texdec.Height = m_nImgHeight; texdec.MipLevels = 1; texdec.ArraySize = 1; texdec.Format = DXGI_FORMAT_R8G8B8A8_UNORM; texdec.SampleDesc.Count = 1; texdec.SampleDesc.Quality = 0; texdec.Usage = D3D11_USAGE_DYNAMIC; texdec.BindFlags = D3D11_BIND_SHADER_RESOURCE; texdec.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; texdec.MiscFlags = 0; dx3d11->getDevice()->CreateTexture2D(&texdec, NULL, &m_pTexture); } { D3D11_MAPPED_SUBRESOURCE hMappedres; dx3d11->getDeviceContext()->Map(m_pTexture, 0, D3D11_MAP_WRITE_DISCARD, 0, &hMappedres); m_pFormatConverter->CopyPixels(NULL, m_nImgWidth * 4, m_nImgWidth * m_nImgHeight * 4, (BYTE*)hMappedres.pData); dx3d11->getDeviceContext()->Unmap(m_pTexture, 0); } { D3D11_SHADER_RESOURCE_VIEW_DESC srv = {}; srv.Format = DXGI_FORMAT_R8G8B8A8_UNORM; srv.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; srv.Texture2D.MipLevels = 1; dx3d11->getDevice()->CreateShaderResourceView(m_pTexture, &srv, &m_pTextureSRV); } こちらの処理で一応画像の読み込みは出来て、正しく表示させることは出来ています。

試したこと

CreateDecoderFromFilename
ではなく
CreateDecoderFromStream
を使えばうまくいくのか?と思い試してみましたがどのような記述をすればよいのかが分かりませんでした。

CreateBitmapFromMemory
というものも見つけましたが、これもどのような記述をしていけばよいのかが分かりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問