0

私は明らかに何か間違ったことをしたことを知っています。とにかく、テクスチャをアニメーション化するためのコードをいくつか書きましたが、何が間違っているのか、何が間違っているのかよくわかりません。

テクスチャにロードするコードは次のとおりです。

 if(PVRTTextureLoadFromPVR(c_szTextureFile, &m_uiTexture[0]) != PVR_SUCCESS)
    {
        PVRShellSet(prefExitMessage, "ERROR: Cannot load the texture\n");
        return false;
    }
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);


    //This loads in the second texture
    if(PVRTTextureLoadFromPVR(c_szTextureFile2, &m_uiTexture[1]) != PVR_SUCCESS)
    {
        PVRShellSet(prefExitMessage, "ERROR: Cannot load the texture2\n");
        return false;
    }
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

テクスチャ座標を更新しようとする私のタイマー関数は次のとおりです

int time_Loc = glGetUniformLocation(m_ShaderProgram.uiId, "Time"); //This stores the location of the uniform
float updateTexture;
float timeElapsed = difftime(time(NULL), Timer) * 1000;
if(timeElapsed > 16.0f)
{
    glUniform1f(time_Loc, updateTexture++); // passes the updated value to shader
}

そして、これがデータを渡すシェーダーです

uniform sampler2D  sTexture;

均一な sampler2D sTexture2;

mediump vec2 TexCoord を変化させます。様々な mediump vec2 TexCoord2;

//This gets updated within the main code
uniform highp float Time;

void main()
{
    mediump vec4 tex1 = texture2D(sTexture, TexCoord + Time);
    mediump vec4 tex2 = texture2D(sTexture2, TexCoord2 + Time); 

    gl_FragColor = tex2 * tex1;
}
4

1 に答える 1