Текстурирование во время выполнения iOS OpenGL - PullRequest
0 голосов
/ 22 сентября 2011

Можно ли как-нибудь автоматически продолжить построение существующей сетки?Как это можно сделать?
Скажем, пример.У меня есть кубоид, и я хотел бы иметь больший кубоид во время выполнения.Кубоиды также имеют некоторую текстуру, а новые части кубоида должны иметь новую текстуру.Я думаю, что для этой проблемы недостаточно масштабирования из-за текстурирования.Как я могу добавить текстуру к моему cuboid во время выполнения?

Можете ли вы предложить мне, пожалуйста, несколько уроков / рамок и любую помощь для решения этой проблемы?


Редактировать: в соответствии с ответом @datenwolf:
Я думаю, что могу расширить формукубоида с повторным использованием той же сетки больше времени.
Есть ли у вас какие-либо идеи, как текстурировать что-то во время выполнения?


Edit2:
Итак, более конкретная проблема: я хотел быпостроить дом, простой кубовидный дом с одним этажом.И через некоторое время я хотел бы добавить еще один этаж.Я думаю, что это легкая задача, но я никогда раньше не работал с такими проблемами.

1 Ответ

3 голосов
/ 22 сентября 2011

OpenGL не является графом сцены.Это просто API рисования.Там нет внутреннего представления того, что видно на экране.Единственное, что остается OpenGL после рисования чего-либо - это содержимое буфера кадров.

Если вы хотите что-то изменить, вы очищаете буфер кадров и перерисовываете сцену с выполненными корректировками.


Относительно запроса РЕДАКТИРОВАТЬ 2: Я могу только повторить свое первое утверждение: OpenGL не является графом сцены, т.е. вы не "строите" сцену с ним.То, что у вас есть, это данные геометрии (вершины) и данные выборки (изображения / текстуры).

Затем у вас есть функция рисования , которая говорит OpenGL сделать треугольники, линии или точки изданные геометрии и заполните полученные фрагменты (= пиксели) значениями, полученными из расчетов освещенности, данных сплошного цвета и выборки текстур.

В OpenGL внесения изменений в сцену не происходит!Внесение изменений в сцену происходит путем внесения изменений в геометрические данные, предоставленные в OpenGL, и различные операции рисования, которые подразумевают .

Как я уже сказал, вы не «строите» свою сцену /геометрия с OpenGL.Для этого вы используете программу 3D-моделирования, такую ​​как Blender, Maya, 3DS Max, Cinema 4D или аналогичную, сохраняете модель в каком-либо хранилище данных (файл, веб-ресурс, запись в базе данных и т. Д.) В формате, доступном для вашей программы рендеринга.Измененная модель хранится в другом месте хранения, также загружается и представляет изменение, которое вы рисуете для новой модели.

Еще один способ построения геометрии - использование системы Constructive (Solid) Geometry (CSG), с помощью которойВы строите сцену из базовых строительных блоков (плоскостей, сфер, конусов, участков с закрытыми поверхностями) и логических операций (объединение, разность, пересечение, исключение).Однако OpenGL не является библиотекой обработки геометрии.

Что дает OpenGL - это инструменты рисования: холсты (= кадровые буферы), трафареты, ножницы, изображения коллажей (текстуры), "фигуры" (= примитивы, то есть точки, линии, треугольники) и "умные кисти" (шейдеры).Интересно, что с помощью буфера трафарета с несколькими проходами можно выполнять экранное пространство, основанное на изображениях логические операции над твердыми телами.Но на самом деле это просто эффект, основанный на изображении, и он не будет обрабатывать саму геометрию.

...