2012-05-01 2 views
1

Я хочу нарисовать модель с LWJGL, и я знаю, что при вызове каждого метода glVertex происходит вызов JNI, что отнимает много времени. Поскольку у меня есть модель в файле, я хочу использовать только один вызов JNI (добавьте собственный метод в библиотеку LWJGL), а с другой стороны, верните мои модели из файла (используя язык c) и нарисуйте их все (избегая вызова JNI на вершину). Итак, я хочу изменить исходный код библиотеки и добавить функцию для этого. мой вопрос в том, что эта функция доступна в LWJGL, JOGL или в любых возможных привязках java для openGL?Использование LWJGL без чрезмерного количества вызовов JNI

+0

Звонок JNI может занять около 10 нс. Сколько раз вы это называете? –

+0

Я думаю около миллиона раз. –

+1

Так что это может занять 10 мс. Стоит проверить, сколько времени занимает ваша машина (она может варьироваться довольно часто). Какой-то тип массовой загрузки имеет смысл, поэтому разумно проверить, что у нее нет такой функции. Конечно, JOCL может принимать целые массивы int/float/double в качестве аргументов (не совсем то же самое) –

ответ

3

Использование Vertex Buffer Objects для хранения данных вершин, и делать звонки рисовать, как много вершин/треугольников практична только с одним вызовом glDrawArrays, glDrawElements или подобное.

This page объясняет, как использовать их в LWJGL.

Обратите внимание, что версия LWJGL документов OpenGL довольно не хватает. Проверьте версии OpenGL official site на версии C, которые очень хорошо объясняют их функциональность.

+0

Большое спасибо @Michael Slade –

1

Вы можете использовать функцию OpenGL glVertexPointer, которая в LWJGL завернута в glVertexPointer (link).

НО!

Если вы беспокоитесь о скорости простого вызова JNI, то почему бы не пересмотреть это в c/C++ вместо этого?

Позже Edit: documentation for glVertexPointer

+0

, потому что другие части моей программы написаны на Java и SWT. –

 Смежные вопросы

  • Нет связанных вопросов^_^