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

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

ただいまの
回答率

88.83%

D3DX10CreateEffectFromFile のエラー分析方法について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 722

GuielNo4

score 81

経緯

「ゲームつくろー」さんのサンプルをベースにHLSLを学習していたのですが、
http://marupeke296.com/DX10_No2Smp_RenderBillboard.html
このサンプルが動作したので、
三角形ポリゴンの頂点カラーもコードから変更できるようにするため
シェーダファイル を書き換えたところ、
D3DX10CreateEffectFromFile関数にてエラーが発生し、
原因分析でつまずいたためここで質問することにしました。

前提・実現したいこと

D3DX10CreateEffectFromFile が FAILED になる原因を分析する方法を探しています。

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

D3DX10CreateEffectFromFile がエラーになるのですが、
const char* err = (const char*)pBlob->GetBufferPointer();
でそのエラーの内容を取得できると推測しているのですが、
errが「0」になっているので、今後どのように調べていけばいいでしょうか?

該当のソースコード

.fx ファイルを以下のように書き換えました。

struct VS_INPUT
{
    float3 position : POSITION_IN;
    float3 color : COLOR;
};
struct PS_INPUT
{
    float4 position : SV_POSITION;
    float3 color : COLOR;
};

PS_INPUT VS( VS_INPUT In )
{
    PS_INPUT Out;
    Out.position = float4( In.position, 1.0f );
    Out.col = In.col;
    return Out;
}

float4 PS( PS_INPUT In ) : SV_Target
{
    return float4( In.col, 1.0f );
}

// Technique Definition
technique10 SimpleRender
{
    pass P0
    {
        SetVertexShader( CompileShader( vs_4_0, VS() ) );
        SetGeometryShader( NULL );
        SetPixelShader( CompileShader( ps_4_0, PS() ) );
    }
}


今後の進め方についてアドバイスいただけると助かります。
不足情報等、ご指摘いただけると助かります。
よろしくお願いいたします。

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

Visual Studio Community 2015
Version 14.0.25431.01 Update 3
dxdiag -> DirectX 12

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

const char* err = (const char*)pBlob->GetBufferPointer();
でそのエラーの内容を取得できる

D3DX10CreateEffectFromFile関数のリファレンスによれば、取得できるようです。

errが「0」になっているので、今後どのように調べていけばいいでしょうか?

実際に Visual Studio 2019 で実行してみたところ、エラーの内容は問題なく取得できました。(ブレークポイントを置いて、デバッガで表示させてみました。)

....fx(12,1): error X3003: redefinition of 'PS_INPUT'

ですが、.fx ファイルを Visual Studio のプロジェクトに追加すれば、.fx ファイルもビルドされるため、このエラーを Visual Studio の出力ウィンドウで見ることができます。(その際、プロジェクトのプロパティページを開き、「構成プロパティ/HLSL コンパイラ/全般」の、「シェーダーの種類」を「エフェクト (/fx)」に、「シェーダーモデル」を「Shader Model 4 (/4_0)」に変更してください。)

以下に、エラーを直したものを置きます。struct PS_INPUTの定義の最後の;の書き忘れと、colorと書くべきところがcolになっていました。

struct VS_INPUT
{
   float3 position : POSITION_IN;
   float3 color : COLOR;
};
struct PS_INPUT
{
   float4 position : SV_POSITION;
   float3 color : COLOR;
};

PS_INPUT VS(VS_INPUT In)
{
   PS_INPUT Out;
   Out.position = float4(In.position, 1.0f);
   Out.color = In.color;
   return Out;
}

float4 PS(PS_INPUT In) : SV_Target
{
    return float4(In.color, 1.0f);
}

// Technique Definition
technique10 SimpleRender
{
   pass P0
   {
      SetVertexShader(CompileShader(vs_4_0, VS()));
      SetGeometryShader(NULL);
      SetPixelShader(CompileShader(ps_4_0, PS()));
   }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/18 20:51

    ご指摘いただいた箇所の修正でエラーが発生しなくなりました。
    アドバイスありがとうございました。
    エラー内容をすぐ確認できるほうがよいので、2019 に移行したいと思います。ありがとうございました。

    キャンセル

  • 2019/05/18 20:55

    いえいえ、お役に立てて幸いです。
    エラーの内容は、2015 でも確認できます!

    キャンセル

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

  • ただいまの回答率 88.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る