iPhone - Использование OpenGL для создания приложений - Какую оболочку использовать или использовать низкоуровневый движок? - PullRequest
0 голосов
/ 10 февраля 2011

Я работаю над парой приложений, которые требуют использования OpenGLes 2.0.Я сделал прототип одного, начиная с простого примера проекта.Однако я не был очень доволен хаосом, который вызвал весь код OpenGL.Я думаю, что весь этот беспорядок вызовет проблемы, если я продолжу расширять код.

Итак, есть ли хорошее решение для работы с OpenGL на немного более высоком уровне?Мне действительно не нужны вся сложность и накладные расходы игрового движка.Я просто немного расстроен, я не могу иметь дело с OpenGL, как это:

ShaderProgram shader(fragmentCode, vertexCode);
RenderBuffer renderBuffer(xResolution, yResolution);

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Вам придется извинить бесстыдную саморекламу, но я работал над именно такой рамкой из-за тех самых разочарований, которые у вас были. Я так устал от бессмысленной необходимости правильно инициализировать ресурсы, а затем очищать их. Вот пример из моего XPG фреймворка.

XPG::Texture2D tex("texture.jpg"); // automatically cleaned up
tex.bind(); // ready for use

Я построил похожие объекты для таких вещей, как объекты буфера вершин (VBO). Я все еще работаю над этим, но инструменты OpenGL наверняка принесут вам большую пользу. Мне еще предстоит увидеть, как другая структура сделает все так просто. Если кто-нибудь знает об этом, я хотел бы услышать об этом. Тот, над которым я работал, работает даже в Android. Это должно работать в iOS, но я еще не проверял это там. Это работает на OSX, хотя. :)

Чтобы увидеть демонстрацию высокого уровня, см. Исходный код тестового модуля: интерфейс и реализация .

1 голос
/ 10 февраля 2011

Я не думаю, что позиция где-то между сырым OpenGL и полным движком будет эффективной. Предположим, у вас есть возможность управлять объектами OpenGL, такими как шейдеры, буферы, текстуры и другие.

  1. Вам все еще понадобится логика загрузки, чтобы получить входные данные откуда-то. У двигателя это есть.
  2. Вам понадобятся инструменты для создания шейдеров и тестирования сцен. Двигатель должен иметь его.
  3. Вы столкнетесь со скрытыми ошибками о несовместимых атрибутах вершин - шейдерах - единообразных параметрах. Движок должен проверить последовательность и плавно связать эти экземпляры.

Отсюда мой вывод: как только вы решили двигаться вперед от необработанного GL, вы в конечном итоге окажетесь в двигателе. Либо в долгосрочной перспективе, если вы делаете это самостоятельно, либо в краткосрочной перспективе, если вы берете существующий.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...