我最近在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
答案 0 :(得分:1)
当你尝试使用int时,你是否也更改了使用数组而不是浮点数的代码?我在这里遇到各种各样的问题。
我以前的问题/答案可能会有所帮助 - 它就在这个领域:
答案 1 :(得分:0)
对于GL_FLOAT
调用中的类型,您没有使用参数为glVertexPointer
的int数组,是吗?在这种情况下,我不会怀疑这种行为。当使用int作为顶点poistions时,请确保在GL_INT
(或任何此类属性数组函数)中使用glVertexPointer
类型作为类型参数。