I haven't gotten too deep into this, but is the root of the problem
not an internal call to updateMipmaps() (a byproduct of being marked as
dirty)? At first glance, I think to support this use case, we'd need
to tweak gl::Fbo::Format() to support something like autoUpdateMipmaps( false )
Does that kind of change seem like it would address your use case?
To be clear, I believe what you're doing is definitely something
we do want to support.
I ran into the same issue, though I believe the title is misleading: bindFrameBufferFace() does the right thing, but then the results get clobbered when you call fbo->getTextureCubeMap() since that path will check the dirty flag and re-compute all mipmaps, and you can't prevent that behavior.
I was about to change FboCubeMap::getTextureCubeMap/Fbo::getTextureBase to take an extra parameter:
TextureCubeMapRefgetTextureCubeMap( GLenum attachment = GL_COLOR_ATTACHMENT0, bool updateMipMaps = true /* set this to false to prevent auto mipmap regeneration */ );
... and plumb that through from TextureBase on up.
That way you still get the default current behavior but you can opt-in to write your own.
Also, I'm new to Cinder and not sure how often these things get updated/merged in.
Leave a comment on Federico Schliemann's reply
Change topic type
Link this topic
Provide the permalink of a topic that is related to this topic