0

270,320のような画面座標を設定してテクスチャを移動したい。現在、テクスチャ設定のopengl座標(0から1)を次のようにレンダリングしています。

private final float[] mVerticesData =
        { 
            -1f, 1f, 0.0f, // Position 0
            0.0f, 1.0f, // TexCoord 0
            -1f, -1f, 0.0f, // Position 1
            0.0f, 0.0f, // TexCoord 1
            1f, -1f, 0.0f, // Position 2
            1.0f, 0.0f, // TexCoord 2
            1f, 1f, 0.0f, // Position 3
            1.0f, 1.0f // TexCoord 3
        };
mVertices = ByteBuffer.allocateDirect(mVerticesData.length * 4)
                    .order(ByteOrder.nativeOrder()).asFloatBuffer();
            mVertices.put(mVerticesData).position(0);

次のコードでレンダリングします。マトリックスなどを設定していません...

// Set the viewport
        GLES20.glViewport(0, 0, SimpleTexture2D.screenSize.x, finalHeight);


    //GLES20.glViewport(0, 0, mWidth, mHeight);


    // Clear the color buffer
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);

    if(useProgram2 == true)
    // Use the program object
    GLES20.glUseProgram(mProgramObject2);
    else
        GLES20.glUseProgram(currentFilter.mProgramObject);

    // Load the vertex position
    mVertices.position(0);
    GLES20.glVertexAttribPointer ( mPositionLoc, 3, GLES20.GL_FLOAT, 
                                   false, 
                                   5 * 4, mVertices );

    // Load the texture coordinate
    mVertices.position(3);
    GLES20.glVertexAttribPointer ( mTexCoordLoc, 2, GLES20.GL_FLOAT,
                                   false, 
                                   5 * 4, 
                                   mVertices );

 // Load the texture coordinate
//        mVertices.position(3);
//        GLES20.glVertexAttribPointer ( mTexCoordLoc2, 2, GLES20.GL_FLOAT,
//                                       false, 
//                                       5 * 4, 
//                                       mVertices );

        GLES20.glEnableVertexAttribArray ( mPositionLoc );
        GLES20.glEnableVertexAttribArray ( mTexCoordLoc );


    // Bind the texture
    //GLES20.glActiveTexture ( GLES20.GL_TEXTURE0 );


    //if(drawOld == true)

        GLES20.glActiveTexture ( GLES20.GL_TEXTURE0 );
        GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, mTextureId);

        GLES20.glUniform1i ( mTextureIdLoc, 0 );




    currentFilter.onDrawFrame();

    // Set the color matrix uniform unit to 1

    GLES20.glDrawElements ( GLES20.GL_TRIANGLES, 6, GLES20.GL_UNSIGNED_SHORT, mIndices );

ヘルプ

4

1 に答える 1

0

ビューポートの代わりにglOrthof(.0、.0、screenWidt、screenHeight ...)を探している可能性があります。ビューポートは通常、バッファ全体を描画するように設定され、0からバッファディメンションに設定されます。一方、「オルソ」は、レンダリング先のビューの境界がどの座標にあるかを示します。

于 2012-08-21T11:11:55.477 に答える