LINUX.ORG.RU

Opengl2.1 в OpenglES2.0

 , , , ,


0

1

По тихоньку портирую форк Corange на android в целом проблемы есть, но понятно как пофиксить (и гугл ккорпорация не добра они выпилили поддерку gcc, конечно если очень хочется то можно, но блин…) а вот с OpenglES немного не ясно

Имеем выхлоп

[armeabi-v7a] SharedLibrary  : libEGNAROC.so
jni/corange/src/graphics.c:413: error: undefined reference to 'glClearDepth'
jni/corange/src/assets/texture.c:73: error: undefined reference to 'glGetTexLevelParameteriv'
jni/corange/src/assets/texture.c:74: error: undefined reference to 'glGetTexLevelParameteriv'
jni/corange/src/assets/texture.c:75: error: undefined reference to 'glGetTexLevelParameteriv'
jni/corange/src/assets/texture.c:95: error: undefined reference to 'glGetTexImage'
jni/corange/src/assets/texture.c:113: error: undefined reference to 'glGetTexImage'
jni/corange/src/assets/texture.c:131: error: undefined reference to 'glGetTexImage'
jni/corange/src/assets/texture.c:89: error: undefined reference to 'glGetTexImage'
jni/corange/src/assets/texture.c:231: error: undefined reference to 'glTexImage3D'
jni/corange/src/assets/texture.c:251: error: undefined reference to 'glGetTexLevelParameteriv'
jni/corange/src/assets/texture.c:619: error: undefined reference to 'glTexImage3D'
jni/corange/src/rendering/renderer.c:491: error: undefined reference to 'glDrawBuffer'
jni/corange/src/rendering/renderer.c:492: error: undefined reference to 'glReadBuffer'
jni/corange/src/rendering/renderer.c:3737: error: undefined reference to 'glPolygonMode'
jni/corange/src/rendering/renderer.c:3739: error: undefined reference to 'glPolygonMode'
jni/corange/src/rendering/renderer.c:3744: error: undefined reference to 'glPolygonMode'
jni/corange/src/rendering/renderer.c:3747: error: undefined reference to 'glPolygonMode'
jni/corange/src/rendering/renderer.c:3752: error: undefined reference to 'glDrawBuffer'
jni/corange/src/rendering/renderer.c:1450: error: undefined reference to 'glClearDepth'
jni/corange/src/rendering/renderer.c:1504: error: undefined reference to 'glClearDepth'
jni/corange/src/ui/nuklear.c:19919: error: undefined reference to 'glPushAttrib'
jni/corange/src/ui/nuklear.c:19932: error: undefined reference to 'glOrtho'
jni/corange/src/ui/nuklear.c:20017: error: undefined reference to 'glPopAttrib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [obj/local/armeabi-v7a/libEGNAROC.so] Error 1
make[1]: Leaving directory `/home/dron/Game3'
make: *** [Makefile:2: all] Ошибка 2
dron@gnu:~/Game3$ 

Ну всяких glPolygonMode glClearDepth glOrtho glPushAttrib glPopAttrib нет ну и хрен с ними первое можно просто игнорировать (или есть чем заметь), а остальные задать явными массивами в шейдеры, pipeline рендера в ES вроде как вообще нет всё на откуп шейдерам отдано если я правильно понял.

Остаются

  • glGetTexLevelParameteriv (как в ES получать информацию по текстурам?)
  • glGetTexImage (как в ES получать данные текстуры (нужно для скриншотов как минимум))
  • glTexImage3D (как работать с 3D текстурами? Это нужно для LUT постобработки)
  • glDrawBuffer (а вот тут я прифигел, каким образом мне назначить отрисовку на FBO?)
  • glReadBuffer (и прифигел ещё раз)

Ну вот вроде всё, я сейчас конечно пойду гуглить упорно и на khronos.org схожу, но вдруг кто уже сталкивался и знает как это всё должно быть чем заменить, какие проблемы могут быть ну и всё такое. И да некоторое есть в ES3.1, но я не хочу 3.1 версию, а именно 2.x что бы иметь покрытие и старого железа.

Deleted

Ответ на: комментарий от eagleivg

Изучу спс, хотя сейчас колупаюсь с android сборкой не хочу я эти gradlew/android-studio и прочее для сборки, надо что бы всё ручками было прописано, а там чёрт ногу сломит )))))))) Пока переключусь на это, а как отлажу сборку на nuklear с новыми ndk/sdk/sdl2.x то продолжу ковырять код дальше, надо по сути внести нерабочий код в #ifdef __ANDROID__ ... и всё, хоть в холостую запустить, а там уже додумывать. И да, я там пулреквест повесил с демкой, типа анимация движения и кубические карты для кубов с инвертированными гранями. Не знаю примет Даниэлька эту шляпу или нет, но думаю демка полезная, я вот ипался два дня пока понял как сделать проще.

И да пасиба за фикс, к слову там ещё с smd/skl/ani беда надо на strtok переводить иначе чуть пробел лишний экспортёр в smd вставит то всё сегфолт сегфолтом погоняет :D

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Meyer

Да вот хочется всё пошагово перевести чтобы не было непонятных мест, но на код я бы глянул такой, а то в большинстве случаев сижу и осторожно палочкой тыкаю. )))

Deleted
()

Посмотри в сторону библиотеки GL4ES: https://github.com/ptitSeb/gl4es от разраба из Pandora-тусовки с ником ptitSeb.

Я её использовал в своём порти игры Gish на Android:

https://github.com/EXL/Gish

Правда у меня там ещё и обычный OpenGL ES-рендерер вкорячен.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

`glDrawBuffer` (а вот тут я прифигел, каким образом мне назначить отрисовку на FBO?)

Ты glDrawBuffer с glDrawBuffers не спутал?

`glGetTexImage` (как в ES получать данные текстуры (нужно для скриншотов как минимум))

glReadPixels?

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от Meyer

LGPL жаль код нельзя будет выдирать (хочу MIT сохранять) но изучить как робит можно, спасибо круглое

Deleted
()
Ответ на: комментарий от i-rinat

Не, glDrawBuffers задаёт несколько целей для записи что бы в шейдёре я писал один выхлоп в gl_FragData[0]= blabla а другой в gl_FragData[1]= blabla и так далее тоесть в две(и более) приатаченные текстуры, а glDrawBuffer у меня стоит при отрисовке сцены в кубическую карту для динамического окружения и переключает отрисовку в грань кубической карты в цикле glDrawBuffer(GL_COLOR_ATTACHMENT0 + i); после бинда фреймбуфера и приатаченной кубемапы, может можно заменить на glDrawBuffers с указанием нулевого индекса хз я не проверял, щя по ссылкам прогуляюсь предложенным и проверю.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от EXL

О, прикольно, особенно решения из Converting the easy stuff лол, надо попробовать )) Спасибо, так всё, материала уже гора хотя бы глазами пройтись надо и выцепить нужное, но сначала надо сборку наладить, а то шаг в лево шаг в право, «у вас не та версия sdk. у вас не та опция, у вас не то у вас не сё, gradlew не смог получить данные, ой ну нахер это всё проще потратить сутки и прописать всё гвоздями, эти андроидовские автогенерилки нихрена не работают с пинка сами по себе без студии»

Deleted
()
20 декабря 2019 г.
Ответ на: комментарий от Deleted

PPSSPP IOs

Thanks for your post. I’ve been thinking about writing a very comparable post over the last couple of weeks, I’ll probably keep it short and sweet and link to this instead if thats cool. Thanks. https://freeppsspp.info/

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.