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

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

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

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

DirectX

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

Q&A

解決済

1回答

1082閲覧

DirectX12で虹色の三角形を描画したい

isimasa

総合スコア295

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

DirectX

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

0グッド

0クリップ

投稿2022/09/26 15:49

編集2022/09/26 15:52

前提

DirectX12で虹色三角形を描画したいと考えています。VisualStudioのバージョンは2017
Windowの作成はできている前提です。
三角形の描画もできています。

実現したいこと

塗りつぶされてしまっている三角形を虹色(上座標:R 右座標:G 左座標:B)にしたい

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

なし

該当のソースコード

HLSL

1VertexShader 2 3float4 main(float4 pos : POSITION) : SV_POSITION 4{ 5 return pos; 6}

HLSL

1PixcelShader 2 3float4 Color; 4float4 main() : SV_TARGET 5{ 6 return Color; 7}

試したこと

HLSL

1struct VSOutput { 2 float4 Position : SV_POSITION; 3 float4 Color : COLOR; 4}; 5 6VSOutput main( 7 float4 pos : POSITION, 8 float4 color : COLOR 9) 10{ 11 VSOutput vsout = (VSOutput)0; ///この部分1 12 vsout.Position = pos; 13 vsout.Color = color; 14 return vsout; 15}

HLSL

1struct VSOutput { 2 float4 Position : SV_POSITION; ///この部分2 3 float4 Color : COLOR; 4}; 5 6float4 main(VSOutput vsout) : SV_TARGET 7{ 8 return vsout.Color; 9}

上記のようにシェーダーを書き直したら自分で作成した色情報が正常に表示されるようになりました。このコードはまず頂点シェーダーで座標だけでなく色も渡すようにして次にピクセルシェーダーで渡された座標をもとに色を出力しているという風に解釈しました。この認識で合っていますか?
また、試したことに載っているコードでVSOutput vsout = (VSOutput)0; ///この部分1
という部分があります。見慣れない書き方なのでどういう意味なのかが知りたいです。
最後に、float4 Position : SV_POSITION; ///この部分2
はピクセルシェーダーで受け取っていますがSV_とつけることでどのように意味が変わるのかについて教えていただきたいと思います。

補足情報(FW/ツールのバージョンなど)

VisualStudio2017
VisualC++
DirectX12

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

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

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

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

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

guest

回答1

0

自己解決

①DirectX12のWindow表示.cppを作成
②"試したこと"のHLSLを作りプロジェクト設定を忘れずにした。

ポリゴン描画
③"Renderer.cpp"と".h"を作成

三角形を塗りつぶす
④三角形の頂点データを修正

C

1// 頂点情報 2MyMyVertex vertices_array[] = 3{ 4 { { 0.0f, 1.0f, 0.0f}, { 1.0f, 0.0f, 0.0f, 1.0f } }, 5 { { -1.0f,-1.0f, 0.0f}, { 0.0f, 1.0f, 0.0f, 1.0f } }, 6 { { 1.0f,-1.0f, 0.0f}, { 0.0f, 0.0f, 1.0f, 1.0f } } 7};

⑤あとは出てきたエラーを潰すだけ。長かった...。

投稿2022/10/04 07:31

isimasa

総合スコア295

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問