int массив в intbuffer для Android OpenGL ES 1.0? - PullRequest
4 голосов
/ 14 октября 2011

Я недавно прочитал статью на 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 "ordin" заполнен переменными, которые были числами с плавающей запятой, преобразованными в целые числаиспользование "Float.floatToIntBits (значение с плавающей точкой)";это нормально ... но массив стандартных целых чисел ничего не показывает ... Но если я просто имею массив float [] и меняю "asIntBuffer ()" на "asFloatBuffer ()", это работает?Я не совсем понимаю.Требуется ли конвертация?Заранее благодарю всех, кто дает какие-либо идеи.

Быстрое редактирование: я чуть не забыл ... это статья, на которую я ссылался: http://www.badlogicgames.com/wiki/index.php/Direct_Bulk_FloatBuffer.put_is_slow

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Когда вы пытались использовать int, вы также меняли код, который использовал массив, чтобы использовать int вместо float? У меня были все виды проблем здесь.

Возможно, мой предыдущий вопрос / ответ поможет - он находится в этой области:

Передача функции java.nio.IntBuffer в функцию C в игре Android

0 голосов
/ 14 октября 2011

Вы не используете массив типа int с параметром GL_FLOAT для типа в вызове glVertexPointer, не так ли?В этом случае я бы не задумывался о поведении.При использовании целых чисел в качестве вершинных вершин обязательно используйте тип GL_INT в качестве параметра типа в glVertexPointer (или любую такую ​​функцию массива атрибутов).

...