質問

私は私のappliactionから私のシェーダで目の位置を更新取得しようとしていますが、私はこれをしようとすると、エラー1281を取得しておきます。私は私が、その後値を更新しようとするだけで、初期化後に問題はありません。ここに私のコードは次のとおりです。

ボイドGraphicsObject :: SendShadersDDS(CHAR vertFile []、CHAR fragFile []、                                     文字ファイル名[]) {

            char *vs = NULL,*fs = NULL;

            vert = glCreateShader(GL_VERTEX_SHADER);
            frag = glCreateShader(GL_FRAGMENT_SHADER);

            vs = textFileRead(vertFile);
            fs = textFileRead(fragFile);
            const char * ff = fs;
            const char * vv = vs;

            glShaderSource(vert, 1, &vv, NULL);
            glShaderSource(frag, 1, &ff, NULL);

            free(vs); free(fs);

            glCompileShader(vert);
            glCompileShader(frag);

            program = glCreateProgram();
            glAttachShader(program, frag);
            glAttachShader(program, vert);

            glLinkProgram(program);
            glUseProgram(program);

        LoadCubeTexture(filename, compressedTexture);

        GLint location = glGetUniformLocation(program, "tex");
        glUniform1i(location, 0);
        glActiveTexture(GL_TEXTURE0);

        EyePos = glGetUniformLocation(program, "EyePosition");

        glUniform4f(EyePos, EyePosition.X(),EyePosition.Y(), 
                                    EyePosition.Z(), 1.0);          
        DWORD bob = glGetError();
        //All is fine here
        glEnable(GL_DEPTH_TEST);

}

:ここで

そして、私は目の位置を更新するために呼び出す機能です

ボイドGraphicsObject :: UpdateEyePosition(のVector3D&eyePosition){

glUniform4f(EyePos, eyePosition.X(),eyePosition.Y(), 
                                    eyePosition.Z(), 1.0);

DWORD bob = glGetError();
//bob equals 1281 after this call       

}

私は、変数を更新する今いくつかの方法を試してみたし、これは最新の化身で、閲覧するためのおかげで、すべてのコメントを歓迎します。

UPDATE:エラーは、実際にそれがあったと仮定するために、ここではすべての私のせいに起きていない私は春の数を描画するとき、エラーが実際に発生ます:

(; I <2; I ++ iが0 = INT)は、

    {

        springs[i].Draw();

}

するとき、私は最初のもの、それの罰金を描くが、コールglEndの()glBegin(GL_LINE_STRIP)に応答した時点で、第二の呼び出し時に、私はエラーを取得します。申し訳ありませんが、それは私が投稿エラーではありませんでしたが、誰もが一様な変数を更新する方法を知りたい場合は、少なくともそれはここだと不便をおかけします。

役に立ちましたか?

解決

これは、最も可能性が高いこれはEyePosが無効であることに起因するでます。

あなたは以下に機能を変更した場合どうなりますか?

void GraphicsObject::UpdateEyePosition(Vector3d& eyePosition)
{
    EyePos = glGetUniformLocation(program, "EyePosition");
    glUniform4f(EyePos, eyePosition.X(),eyePosition.Y(), eyePosition.Z(), 1.0);

    DWORD bob = glGetError();
}

編集:あなたの更新に応じてglBegin / glEndのためのドキュメントはモードが受け入れられない値に設定されている場合は、エラー1280(GL_INVALID_ENUM)を取得しますと言います。したがって、あなたの問題はGL_LINE_STRIPがサポートされていないということです。

GL_INVALID_OPERATION is generated if glBegin is executed between a glBegin and the corresponding execution of glEnd.

GL_INVALID_OPERATION is generated if glEnd is executed without being preceded by a glBegin.

GL_INVALID_OPERATION is generated if a command other than glVertex, glColor, glSecondaryColor, glIndex, glNormal, glFogCoord, glTexCoord, glMultiTexCoord, glVertexAttrib, glEvalCoord, glEvalPoint, glArrayElement, glMaterial, glEdgeFlag, glCallList, or glCallLists is executed between the execution of glBegin and the corresponding execution glEnd.
多くは、正確なエラーによって異なりだから

GL_INVALID_OPERATIONリターンエラー1282とGL_INVALID_ENUM 1280 ...あなたが取得している...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top