bool ColorBufferToRDRAM_GLES::_readPixels(GLint _x0, GLint _y0, GLsizei _width, GLsizei _height, u32 _size, bool _sync) { GLenum colorFormat, colorType, colorFormatBytes; if (_size > G_IM_SIZ_8b) { colorFormat = fboFormats.colorFormat; colorType = fboFormats.colorType; colorFormatBytes = fboFormats.colorFormatBytes; } else { colorFormat = fboFormats.monochromeFormat; colorType = fboFormats.monochromeType; colorFormatBytes = fboFormats.monochromeFormatBytes; } GLubyte* pixelData = m_pixelData.data(); if (!_sync) { void* ptr; glBindTexture(GL_TEXTURE_2D, m_pTexture->glName); m_glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_image); glBindTexture(GL_TEXTURE_2D, 0); int widthBytes = _width*colorFormatBytes; int strideBytes = m_pTexture->realWidth * colorFormatBytes; m_window->lock(GraphicBuffer::USAGE_SW_READ_OFTEN, &ptr); for (unsigned int lnIndex = 0; lnIndex < _height; ++lnIndex) { memcpy(pixelData + lnIndex*widthBytes, reinterpret_cast<char*>(ptr) + ((lnIndex + _y0)*strideBytes), widthBytes); } m_window->unlock(); } else { glReadPixels(_x0, _y0, _width, _height, colorFormat, colorType, pixelData); } return true; }
void S60EglExtensions::glEglImageTargetTexture(GLenum target, GLeglImageOES image) { return m_glEGLImageTargetTexture2DOES(target, image); }