People in this conversation:
Simon Kozlov
AddZeux
Add Zeux: @All
Работать с OGRE сплошное удовольствие, столько фана! Вот тут странный баг на ipad - есть код который делает texture compositing для персонажей, запекая все в одну текстуру в рантайме. И вот достаточно редко (типа 1 из 10 запусков) на одном из персонажей текстурка серая (ее clear color - серый, т.е. ощущение, что ничего не рисуется). После определенного количества дебага выяснилось, что при загрузке текстур не степени двойки через Ogre в OpenGL ES делается glClear текущим цветом (соответственно, есть timing condition - если пока FBO composit текстуры еще активен решить что нам срочно нужно загрузить текстуру определенных размеров, то проявляется баг). И вот почему! (ценители OpenGL оценят)
Есть код, который блитает из текстуры в текстуру методом "временно привязать target текстуру к FBO и нарисовать квад с первой текстурой". Он зачем-то дергается при загрузке текстуры с несовпадающими размерами (типа хотели 143x127, а пришлось 256x128). Вот код из desktop opengl:
void GLTextureBuffer::blitFromTexture(GLTextureBuffer *src, const Image::Box &srcBox, const Image::Box &dstBox)
{
/// Store reference to FBO manager
GLFBOManager *fboMan = static_cast(GLRTTManager::getSingletonPtr());
/// Save and clear GL state for rendering
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT |
GL_FOG_BIT | GL_LIGHTING_BIT | GL_POLYGON_BIT | GL_SCISSOR_BIT | GL_STENCIL_BUFFER_BIT |
GL_TEXTURE_BIT | GL_VIEWPORT_BIT);
Вот эквивалент на OpenGL ES:
void GLESTextureBuffer::blitFromTexture(GLESTextureBuffer *src, const Image::Box &srcBox, const Image::Box &dstBox)
{
// Store reference to FBO manager
GLESFBOManager *fboMan = static_cast(GLESRTTManager::getSingletonPtr());
// Save and clear GL state for rendering
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
Simon Kozlov: reply @Zeux
То есть, пацаны когда портировали не знали чем заменить glPushAttrib и нашли glClear?
Потому что мол некоторые флаги туда пролазят и в комментариях что-то про clear говорится?
Zeux: reply @Simon Kozlov
Ну да. Save не получилось так хоть clear сделаем!
This happened on
#gamedeff