0

これは、デバッグ エラーの取得に関して私ができる最善の方法です。

スナップショット 大きな画像バージョンへのリンク

ご覧のとおり、glGetProgramInfoLog() は次の文を返します。

「頂点シェーダが無効です。リンクを続行できません。」

Eclipse IDE の黄色の行は、ステップオーバーによってプログラムが実行されたばかりのコード行です。矢印の付いた緑色の線は、プログラムが実行される場所です。

私の頂点シェーダーコードが間違っている行、または私を良い方向に向ける何かを教えてくれるなら、私はそれを好む. このあいまいな説明では、私はあなたに助けを求めることしかできません。

頂点シェーダー コードは次のようになります。

uniform mat4 u_mvpMatrix;
uniform mat4 u_mvMatrix;
uniform vec3 u_lightPosition;

attribute vec4 a_position;
attribute vec4 a_color;
attribute vec3 a_normal;

varying vec4 v_color;

void main() {
    vec3 modelViewVertex = vec3(u_mvMatrix * a_position);
    vec3 modelViewNormal = vec3(u_mvMatrix * vec4(a_normal, 0.0));

    float distance = length(u_lightPosition - modelViewVertex);
    vec3 lightVector = normalize(u_lightPosition - modelViewVertex);
    float diffuse = max(dot(modelViewNormal, lightVector), 0.1);
    diffuse = diffuse * (1.0 / (0.25 * distance * distance));

    v_color = a_color * diffuse;

    gl_Position = mvpMatrix * a_position;
}

どこを間違えたのかわからない。見つけるのを手伝ってくれませんか?さらに情報が必要な場合は、追加します。前もって感謝します。

編集1:

glGetShaderInfo() からのデバッグ情報はありません。

glGetShaderInfo() は何も与えません。 より大きなバージョン。

さらに詳しい情報:

文字列が空です。

編集2:

glGetShader() と glGetShaderInfo() の組み合わせを試してみましたが、まだうまくいきません。

glGetShader() と glGetShaderInfo() の混合出力。 より大きなバージョン。

4

1 に答える 1

0

エラーを発見!

この間ずっと、間違ったソース ファイルを編集していました。

保存/チェック/保存/チェックを続けました...、上記のソースコードがプロジェクトに含まれていないことに気づきませんでした。したがって、頂点シェーダーが無効であると述べているプログラムは、コンパイラーがソースをコンパイルしているためです。新しく変更されたバージョン (これは、私がずっと編集していたソース コードです) ではありません。

みんなの時間を無駄にしてごめんなさい。

于 2013-04-01T15:35:04.767 に答える