我正在尝试将我在 Android 上的 Java OpenGL 代码移植到 Native SDK,我需要一个 IntBuffer 实现。
基本上,我在 Java 中将任意整数 RGBA 像素颜色数组加载到纹理中的操作是:
// 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 类的缓冲区将整数像素数组中的一系列颜色绑定到纹理。