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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

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

Q&A

解決済

2回答

1141閲覧

directx12 定数バッファコミットリソースを作成

valval

総合スコア43

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

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

0グッド

0クリップ

投稿2023/02/04 06:19

編集2023/02/04 06:20

お世話になります。

実現したいこと

このページに記載されております、
ポリゴンの移動を試みております。

前提

Windows11マシン
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.4.4を開発環境とし
DirectX12使用

発生している問題・エラーメッセージ

エラー C2102 '&' に左辺値がありません。

該当のソースコード

C++

1 // 定数バッファコミットリソースを作成 2if(FAILED(g_device->CreateCommittedResource( 3 &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD), 4 D3D12_HEAP_FLAG_NONE, 5 &CD3DX12_RESOURCE_DESC::Buffer(1024 * 64), 6 D3D12_RESOURCE_STATE_GENERIC_READ, 7 nullptr, 8 IID_PPV_ARGS(g_constantBuffer.GetAddressOf())))) 9 { 10 MessageBox(NULL, L"定数バッファコミットリソースを作成できませんでした。", WINDOW_TITLE, MB_OK | 11 MB_ICONERROR); 12 return E_FAIL; 13 }

このif文のある行でエラーが出ています。
上記では、&は、ポインタアドレスを指すはずなのに、
なぜか論理演算子扱いされているのが不可解です。

どうすれば、このエラーが解消しますか?
よろしくお願いいたします。

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

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

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

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

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

isimasa

2023/02/04 07:10

D3D12_HEAP_PROPERTIES D3D12_RESOURCE_DESC にして動かないですか。
valval

2023/02/04 07:19

コメントをありがとうございます。 &を外し、 if(FAILED(g_device->CreateCommittedResource( D3D12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD), D3D12_HEAP_FLAG_NONE, D3D12_RESOURCE_DESC::Buffer(1024 * 64), D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(g_constantBuffer.GetAddressOf())))) としましたが、 ``` エラー (アクティブ) E0289 コンストラクター "D3D12_HEAP_PROPERTIES::D3D12_HEAP_PROPERTIES" のインスタンスが引数リストと一致しません エラー C2440 '<function-style-cast>': 'D3D12_HEAP_TYPE' から 'D3D12_HEAP_PROPERTIES' に変換できません。 545 エラー C2039 'Buffer': 'D3D12_RESOURCE_DESC' のメンバーではありません 545 エラー C3861 'Buffer': 識別子が見つかりませんでした ``` というエラーが出ました。
guest

回答2

0

ベストアンサー

定数バッファリソースのヒープ設定、定数バッファのリソースの設定
を行わないといけないようです。
D3D12_HEAP_PROPERTIES cbHeapProp = {};
/*ここに設定を書く

*/
D3D12_RESOURCE_DESC cbResDesc = {};
/*ここに設定を書く

*/

// 定数バッファコミットリソースを作成
これを当てはめる
&cbHeapProp,
&cbResDesc,

投稿2023/02/04 08:22

isimasa

総合スコア295

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

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

valval

2023/02/04 09:34

ありがとうございます。 下記の通りにして、エラーが消えました。 D3D12_HEAP_PROPERTIES cbHeapProp = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD); CD3DX12_RESOURCE_DESC cbResDesc = CD3DX12_RESOURCE_DESC::Buffer(1024 * 64); // 定数バッファコミットリソースを作成 if( FAILED(g_device->CreateCommittedResource( &cbHeapProp, D3D12_HEAP_FLAG_NONE, &cbResDesc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(g_constantBuffer.GetAddressOf())))) { MessageBox(NULL, L"定数バッファコミットリソースを作成できませんでした。", WINDOW_TITLE, MB_OK | MB_ICONERROR); return E_FAIL; }
guest

0

左辺値というのは二項演算子の左辺の値という意味ではなく lvalue の訳語です。 lvalue ではない値のアドレスをとることは出来ません。

投稿2023/02/04 07:08

SaitoAtsushi

総合スコア5444

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問