2013-02-11 1 views
0

У меня есть алгоритм генерации Procedural Texture, который генерирует текстуру. Текстура - это просто BufferedImage.Precompute A Texture во время компиляции в Java

Эта текстура в основном отображается на объект в Java3D. Теперь, поскольку текстура не будет меняться во время выполнения программы, я хочу предварительно скопировать текстуру во время самой компиляции, чтобы во время выполнения она использовала предварительно вычисленную текстуру.

Если текстура была создана во время выполнения, это приводит к задержке запуска программы.

Мой вопрос,

Можно ли предвычисления текстуры во время самой фазы компиляции?

+0

Вы можете запустить программное обеспечение для генерации текстуры один раз, сохранить текстуру в файл, а затем загрузить ту же текстуру при запуске вашей программы. – Aaron

+0

Вы можете делать все как часть своей сборки проекта, но как это сделать, зависит от того, как вы строите проект в первую очередь. 'javac' на самом деле не позволяет запускать произвольный код как часть компиляции (если вы не считаете' apt'), в то время как IDE или 'maven' являются гораздо более гибкими. – millimoose

+0

@millimoose Если я добавлю модификатор 'final' в поле, это будет иметь значение, т. Е. Компилятор распознает это поле как постоянное и прекомпретирует его. –

ответ

2

Я так не думаю, но вы могли бы написать отдельную программу Java для вычисления текстур и сохранения файлов BufferedImages в файлах, которые будут прочитаны программой Java игры.

Это зависит от вас, чтобы определить, стоит ли экономить время.

Отредактировано для добавления: В большинстве игр вы либо просматриваете видео во время вычисления текстуры, либо говорят, что они вычисляют текстуры. Кто-нибудь еще помнит «Reticulating Splines»?

+0

Если я добавлю модификатор 'final' в это поле, будет ли он иметь значение, т. Е. Компилятор распознает это поле как постоянное и прекомпретирует его. –

+0

Нет. final означает, что значение устанавливается один раз, либо как часть определения, либо в конструкторе. Значение вычисляется во время выполнения, а не компиляции. –

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