Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Vladimír Vondruš
@mosra
thus basic examples all work, but everything breaks once you attempt to create a custom Framebuffer and attach something to it -- then it binds it, and when going back to GL::defaultFramebuffer, it binds framebuffer with ID 0 instead of the actual custom framebuffer object iOS uses by default
the fix here should be querying the ID of the iOS default implicit framebuffer as the first thing, wrapping it into magnum's Framebuffer object and then using that instead of GL::defaultFramebuffer
i have a feeling that we discussed it here with somebody some months ago once already, if i find it then i could give you a ready-made code for this
it seems that it's a bit more complicated, in fact
Vladimír Vondruš
@mosra
GLint iosDefaultFramebufferId; // do this as the first thing ever
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &iosDefaultFramebufferId);

GL::Framebuffer iosDefaultFramebuffer = GL::Framebuffer::wrap(iosDefaultFramebufferId, GL::defaultFramebuffer.viewport());
could get you the iOS default framebuffer (which you then use in place of GL::defaultFramebuffer everywhere), but then (according to the messages from back then) you also need to query the original renderbuffer and then rebind it right before a buffer swap:
GLint iosDefaultRenderbufferId; // also as the first thing ever
glGetIntegerv(GL_RENDERBUFFER_BINDING, &iosDefaultRenderbufferId);

// right before a buffer swap
glBindRenderbuffer(GL_RENDERBUFFER, iosDefaultRenderbuffer);
// so the state tracker doesn't think some other renderbuffer is still bound
GL::Context::current().resetState(GL::Context::State::Framebuffer);

swapBuffers();
adding this to my documentation TODOs, don't want to reinvent the same wheel for the third time :)
i hope this helps! :)
FoNz
@FoNz80555345_twitter
Ok thanks a lot! I didn't know a default framebuffer doesn't exist in iOS. I'll try this later. Thanks again.
Vladimír Vondruš
@mosra
i'm not exactly sure if it needed to be the default framebuffer as well, but the renderbuffer definitely
this sequence of magic incantations worked before, and i don't have an iOS device around to test it ... so if just the renderbuffer part works, please let me know :)
FoNz
@FoNz80555345_twitter
Yea, it works! But picking does not work. I scanned the entire renderbuffer, but it's all 0. Maybe is the same problem.
FoNz
@FoNz80555345_twitter
How do I pass SDL_GL_RETAINED_BACKING flag through Magnum's main? Maybe that's the problem...
It should be passed before SDL_CreateWindow
FoNz
@FoNz80555345_twitter
I think I have to override the tryCreate method when I extend the Sdl2Application class...
FoNz
@FoNz80555345_twitter
Mhh no change in behavior... still I got 0 everywhere in the renderbuffer for object picking
FoNz
@FoNz80555345_twitter
Anyway, seeing my game on iOS bring tears to my eyes!
FoNz
@FoNz80555345_twitter
Wait... it works on a real device, but not in Simulator... I have read previously this thing around the internet... anyway it works!!
Vladimír Vondruš
@mosra
yayyyyy
Vladimír Vondruš
@mosra
@FoNz80555345_twitter which of the two snippets were needed, after all? both or just the renderbuffer part?
FoNz
@FoNz80555345_twitter

@FoNz80555345_twitter which of the two snippets were needed, after all? both or just the renderbuffer part?

I replaced the GL::defaultFramebuffer with myOwnDefaultFramebuffer (which I obtained through GL::Framebuffer::wrap function, giving the ID of the framebuffer obtained through glGetIntegerv) everywhere for iOS and Simulator. Also, I needed to also do:

glBindRenderbuffer(GL_RENDERBUFFER, myOwnDefaultRenderbuffer);
GL::Context::current().resetState(GL::Context::State::Framebuffer);

Right after switching to the "default" framebuffer. Without this, it doesn't work, even if I bind the "default" framebuffer.

All of my render targets work with mouse picking!! :)
Vladimír Vondruš
@mosra
so myOwnDefaultFramebuffer has a non-zero ID, right? just double-checking i understand this properly
pezcode
@pezcode
Shot in the dark but maybe someone knows: is there a way to override CMake project languages from the command line?
Vladimír Vondruš
@mosra
you mean the languages in project()?
pezcode
@pezcode
yeah
I found CMAKE_PROJECT_INCLUDE which kinda does what I want but it's hacky and requires 3.15
Lets me just include a file with enable_language(XXX)
Vladimír Vondruš
@mosra
yep, that .. could be doable with a toolchain file, i hope?
or make a wrapper CMakeLists that add_subdirectory()s the otiginal project, and has a project() with languages you want? not sure how that propagates into nested projects tho
which extra languages you need?
pezcode
@pezcode
I need C for try_compile, and I'll let you take a guess which favorite trashcan library of yours is making me do this
hint: it starts with ass :eyes:
Vladimír Vondruš
@mosra
HAH
pezcode
@pezcode
This blows up in try_compile because it doesn't look for a C compiler so it can't match that C feature
Vladimír Vondruš
@mosra
ahahahahah
sounds like you're pretty deep in this, what was the original problem? :D
pezcode
@pezcode
I just wanted to add support for the scene name added in assimp/assimp#3510
but with master half the tests fail now and I'm about to give up
Vladimír Vondruš
@mosra
:see_no_evil:
that doesn't seem like a feature worth dying for :D
and i thought you did not want to touch assimp ever again?
pezcode
@pezcode
it seemed simple enough to spend 30 minutes on
no use putting all that work in until there's a new tagged release, anyway
Vladimír Vondruš
@mosra
if you want something else knee-deep in assimp, i have this half-done custom assimp material support WIP PR opened on the plugins repo, it "just" needs to find some files that the new codepaths could be tested with
pezcode
@pezcode
that's a lot of open checkboxes

that's a lot of open checkboxes

yeah exactly, and i gave up (they're apparently reworking this to be less shit), so from the PR i would only take the custom materials, which is the very last checkbox, nothing else

assimp has a clear set of types (nice) and predefined attribute name strings with varying level of shittiness (ew), which, if imported as-is (without trying to make sense of) could work as at least some way of providing access to, say, FBX PBR attributes