Какого черта я хочу это сделать? OpenGL Shader Builder - отличный инструмент для разработки, но он компилирует шейдеры, используя настольный OpenGL, что допускает некоторые вещи, которых нет у ES. Я полагаю, что если я смогу создать инструмент, который ссылается на OpenGLES.framework в iPhone Simulator SDK, я смогу получить некоторые отчеты об ошибках без необходимости создания / установки / запуска моего приложения.
Изучив командные строки, появляющиеся в окне сборки Xcode, я дошел до этого (для ясности в формате Makefile. Серьезно!):
ARCH=i386
PLATFORM=/Developer/Platforms/iPhoneSimulator.platform/Developer
GCC=$(PLATFORM)/usr/bin/gcc-4.2
ISYSROOT=$(PLATFORM)/SDKs/iPhoneSimulator3.2.sdk
glsllint: glsllint.c
$(GCC) -arch $(ARCH) -isysroot $(ISYSROOT) -mmacosx-version-min=10.5 -framework OpenGLES \
glsllint.c -o glsllint
Сам файл C минимален; он содержит только вызов glCreateShader()
, так что я могу определить, правильно ли он связывается. Выше приведено выполнение исполняемого файла, но когда я пытаюсь запустить его:
dyld: Library not loaded: /System/Library/Frameworks/OpenGLES.framework/OpenGLES
Это неправильное место. Как мне сделать так, чтобы исполняемый файл искал фреймворк в правильном месте?
Я знаю, что это не поддерживается, но, блин, разве это не круто, если это сработает? Чтобы было ясно, я не ожидаю, что эта программа будет что-то рисовать, я просто хочу загрузить исходный код шейдера, использовать OpenGL для его компиляции и распечатать ошибки, если таковые имеются.
Сейчас вопрос в том, могу ли я создать исполняемый файл, который запускается?