Как дать эффект шейдера с anyFile.vsh и anyFile.fsh в камере Android? - PullRequest
2 голосов
/ 21 октября 2011

В моем приложении я должен использовать камеру Android и OpenGLES. Я также должен дать эффект Camera Vision с двумя файлами, называемыми one.vsh и one.fsh, но я не знаю, как реализовать этот файл в OpenGLES.

Даже я также не знаю, как реализовать Android-камеру для работы с OPENGLES, чтобы сделать эффект с этими двумя файлами.

Пожалуйста, помогите мне в этом. Спасибо.

1 Ответ

2 голосов
/ 22 октября 2011

Ну, у меня нет теста на камеру Android, чтобы использовать такой эффект на нем.Но, конечно, вы можете использовать файл шейдера в методе onSurfaceCreated, как показано ниже:

//
// Initialize the shader and program object
//
public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
    String vShaderStr = "uniform mat4 u_mvpMatrix;         \n"
            + "attribute vec4 a_position;                  \n"
            + "void main()                                 \n"
            + "{                                           \n"
            + "   gl_Position = u_mvpMatrix * a_position;  \n"
            + "}                                           \n";


    String fShaderStr = "precision mediump float;                  \n"
            + "void main()                                         \n"
            + "{                                                   \n"
            + "  gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );        \n"
            + "}                                                   \n";

    // Load the shaders and get a linked program object
    mProgramObject = ESShader.loadProgram(vShaderStr, fShaderStr);

    // Get the attribute locations
    mPositionLoc = GLES20.glGetAttribLocation(mProgramObject, "position");

    // Get the uniform locations
    mMVPLoc = GLES20.glGetUniformLocation(mProgramObject, "u_mvpMatrix");

    // Generate the vertex data
    mCube.genCube(1.0f);

    // Starting rotation angle for the cube
    mAngle = 45.0f;

    GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

Просто замените String, который вы хотите использовать для вершинного шейдера и фрагментного шейдера.Надеюсь, это поможет.

...