本文整理汇总了C++中GrContext::readTexturePixels方法的典型用法代码示例。如果您正苦于以下问题:C++ GrContext::readTexturePixels方法的具体用法?C++ GrContext::readTexturePixels怎么用?C++ GrContext::readTexturePixels使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GrContext
的用法示例。
在下文中一共展示了GrContext::readTexturePixels方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fpTexture
DEF_GPUTEST(FloatingPointTextureTest, reporter, factory) {
float controlPixelData[FP_CONTROL_ARRAY_SIZE];
float readBuffer[FP_CONTROL_ARRAY_SIZE];
for (int i = 0; i < FP_CONTROL_ARRAY_SIZE; i += 4) {
controlPixelData[i] = FLT_MIN;
controlPixelData[i + 1] = FLT_MAX;
controlPixelData[i + 2] = FLT_EPSILON;
controlPixelData[i + 3] = kMaxIntegerRepresentableInSPFloatingPoint;
}
for (int origin = 0; origin < 2; ++origin) {
int glCtxTypeCnt = 1;
glCtxTypeCnt = GrContextFactory::kGLContextTypeCnt;
for (int glCtxType = 0; glCtxType < glCtxTypeCnt; ++glCtxType) {
GrTextureDesc desc;
desc.fFlags = kRenderTarget_GrTextureFlagBit;
desc.fWidth = DEV_W;
desc.fHeight = DEV_H;
desc.fConfig = kRGBA_float_GrPixelConfig;
desc.fOrigin = 0 == origin ?
kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin;
GrContext* context = NULL;
GrContextFactory::GLContextType type =
static_cast<GrContextFactory::GLContextType>(glCtxType);
if (!GrContextFactory::IsRenderingGLContext(type)) {
continue;
}
context = factory->get(type);
if (NULL == context){
continue;
}
SkAutoTUnref<GrTexture> fpTexture(context->createUncachedTexture(desc,
NULL,
0));
// Floating point textures are NOT supported everywhere
if (NULL == fpTexture) {
continue;
}
// write square
context->writeTexturePixels(fpTexture, 0, 0, DEV_W, DEV_H, desc.fConfig,
controlPixelData, 0);
context->readTexturePixels(fpTexture, 0, 0, DEV_W, DEV_H, desc.fConfig, readBuffer, 0);
for (int j = 0; j < FP_CONTROL_ARRAY_SIZE; ++j) {
REPORTER_ASSERT(reporter, readBuffer[j] == controlPixelData[j]);
}
}
}
}
示例2: readPixels
bool GrTexture::readPixels(int left, int top, int width, int height,
GrPixelConfig config, void* buffer,
size_t rowBytes, uint32_t pixelOpsFlags) {
// go through context so that all necessary flushing occurs
GrContext* context = this->getContext();
if (NULL == context) {
return false;
}
return context->readTexturePixels(this,
left, top, width, height,
config, buffer, rowBytes,
pixelOpsFlags);
}