本文整理汇总了C++中VideoBuffer::bpr方法的典型用法代码示例。如果您正苦于以下问题:C++ VideoBuffer::bpr方法的具体用法?C++ VideoBuffer::bpr怎么用?C++ VideoBuffer::bpr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VideoBuffer
的用法示例。
在下文中一共展示了VideoBuffer::bpr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: glGetIntegerv
void CaptureCallback::ContextData::readImage()
{
int width = _graphicsContext->getTraits()->width;
int height = _graphicsContext->getTraits()->height;
if (width!=_width || _height!=height)
{
_width = width;
_height = height;
}
if (_delegate)
{
VideoBuffer *buffer = _delegate->getVideoBuffer();
GLint internalFormat = GL_BGRA; // This is fine for iOS
#ifdef ANDROID // Depending in the platform / android version, the pixel format will change
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &internalFormat);
if (internalFormat == GL_RGB)
internalFormat = GL_RGBA;
#endif
buffer->pixelFormat = internalFormat;
size_t bpp = buffer->bpp();
size_t bpr = buffer->bpr();
GLubyte *pixelBufferData = (GLubyte *)buffer->data();
glReadPixels(0, 0, width, height, internalFormat, GL_UNSIGNED_BYTE, pixelBufferData);
if (bpr != width*bpp){
// There is some padding expected in the buffer, let's move stuff around
for (int y = height-1; y > 0; --y){
memmove(pixelBufferData + y * bpr, pixelBufferData + y * width * bpp, width * bpp);
}
}
_delegate->didCaptureImage();
}
}