int数组到Android OpenGL ES 1.0的intbuffer?

时间:2011-10-14 15:48:04

标签: android opengl-es android-2.2-froyo

我最近在Badlogicgames.com上阅读了一篇关于加快将信息添加到顶点缓冲区(或任何其他intbuffer)的过程的文章,它确实提高了我的项目速度,但我不太明白

  

“注意到IntBuffer.put(int [] src)没有受到问题的影响”

语句....如果不需要浮点数,是否可以将int []数组提供给IntBuffer以提高速度?每次我尝试将int []放入缓冲区;什么都没有呈现......

以下是我目前使用的示例:

dMesh[i].putVertexBuffer(coords); //function being called

            public void putVertexBuffer(int[] input) //actual function
            {
                ByteBuffer tC = ByteBuffer.allocateDirect(input.length *4);
                tC.order(ByteOrder.nativeOrder());
                _vertexBuffer = tC.asIntBuffer();
                _vertexBuffer.put(input);
                _vertexBuffer.position(0);
            }

现在,如果int数组“coords”填充了使用“Float.floatToIntBits(float value)”将浮点数转换为整数的变量;这很好......但是一组标准整数没有显示任何东西...... 但是,如果我只有一个float []数组并将“asIntBuffer()”更改为“asFloatBuffer()”,这有效吗?我糊涂了。是否需要转换? 非常感谢任何提供任何见解的人。

快速修改: 我差点忘了......这是我引用的文章: http://www.badlogicgames.com/wiki/index.php/Direct_Bulk_FloatBuffer.put_is_slow

2 个答案:

答案 0 :(得分:1)

当你尝试使用int时,你是否也更改了使用数组而不是浮点数的代码?我在这里遇到各种各样的问题。

我以前的问题/答案可能会有所帮助 - 它就在这个领域:

Passing java.nio.IntBuffer to C function in an Android game

答案 1 :(得分:0)

对于GL_FLOAT调用中的类型,您没有使用参数为glVertexPointer的int数组,是吗?在这种情况下,我不会怀疑这种行为。当使用int作为顶点poistions时,请确保在GL_INT(或任何此类属性数组函数)中使用glVertexPointer类型作为类型参数。