1

Android 上の Java OpenGL コードをネイティブ SDK に移植しようとしていますが、IntBuffer の実装が必要です。

基本的に、任意の整数 RGBA ピクセル カラー配列をテクスチャにロードするために Java で行うことは次のとおりです。

    // pixel array
    pixelIntArray = new int[width * height];

    bb = ByteBuffer.allocateDirect(pixelIntArray.length * 4);
    bb.order(ByteOrder.nativeOrder());

    // native buffer
    pixelBuffer = bb.asIntBuffer();

    // push integer array of pixels into buffer
    pixelBuffer.put(pixelIntArray);
    pixelBuffer.position(0);

    // bind buffer to texture
    gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, width, height, 0,
                GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixelBuffer);

バッファを使用してクワッドにテクスチャをプッシュできるように C で。

現在、C の pixelIntArray にバインドしているだけで、テクスチャが歪んでいます。

基本的に、Java の NIO クラスと同様のバッファーを介して、整数ピクセル配列内の一連の色をテクスチャにバインドできる必要があります。

4

1 に答える 1

0

私はこれがそれを解決する方法かもしれないと思います:


初期化


    int length = width * height;

    int* pixels = (int*) malloc(sizeof(int) * length);
    unsigned char * buffer = (unsigned char*) malloc(sizeof(char) * length * 4);

バッファにコピー


    int i, j;

    for (i = 0; i < length; i++) {

        j = 4 * i;

        buffer[j] = (char) (pixels[i] & 0xFF);
        buffer[j + 1] = (char) (pixels[i] >> 8 & 0xFF);
        buffer[j + 2] = (char) (pixels[i] >> 16 & 0xFF);
        buffer[j + 3] = (char) (pixels[i] >> 24 & 0xFF);

    }

ソース


差出人:http ://www.c-sharpcorner.com/Forums/Thread/32972/

于 2013-01-21T07:53:10.403 に答える