本文整理汇总了C++中DisplayListRenderer::insertReorderBarrier方法的典型用法代码示例。如果您正苦于以下问题:C++ DisplayListRenderer::insertReorderBarrier方法的具体用法?C++ DisplayListRenderer::insertReorderBarrier怎么用?C++ DisplayListRenderer::insertReorderBarrier使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DisplayListRenderer
的用法示例。
在下文中一共展示了DisplayListRenderer::insertReorderBarrier方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
createTestEnvironment();
// create the native surface
const int width = gDisplay.w;
const int height = gDisplay.h;
sp<SurfaceControl> control = createWindow(width, height);
sp<Surface> surface = control->getSurface();
RenderNode* rootNode = new RenderNode();
rootNode->incStrong(0);
rootNode->mutateStagingProperties().setLeftTopRightBottom(0, 0, width, height);
rootNode->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
rootNode->mutateStagingProperties().setClipToBounds(false);
rootNode->setPropertyFieldsDirty(RenderNode::GENERIC);
ContextFactory factory;
RenderProxy* proxy = new RenderProxy(false, rootNode, &factory);
proxy->loadSystemProperties();
proxy->initialize(surface);
float lightX = width / 2.0;
proxy->setup(width, height, (Vector3){lightX, dp(-200.0f), dp(800.0f)},
dp(800.0f), 255 * 0.075, 255 * 0.15);
android::uirenderer::Rect DUMMY;
std::vector< sp<RenderNode> > cards;
DisplayListRenderer* renderer = startRecording(rootNode);
renderer->drawColor(0xFFFFFFFF, SkXfermode::kSrcOver_Mode);
renderer->insertReorderBarrier(true);
for (int x = dp(16); x < (width - dp(116)); x += dp(116)) {
for (int y = dp(16); y < (height - dp(116)); y += dp(116)) {
sp<RenderNode> card = createCard(x, y, dp(100), dp(100));
renderer->drawRenderNode(card.get(), DUMMY, 0);
cards.push_back(card);
}
}
renderer->insertReorderBarrier(false);
endRecording(renderer, rootNode);
for (int i = 0; i < 150; i++) {
ATRACE_NAME("UI-Draw Frame");
for (size_t ci = 0; ci < cards.size(); ci++) {
cards[ci]->mutateStagingProperties().setTranslationX(i);
cards[ci]->mutateStagingProperties().setTranslationY(i);
cards[ci]->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
}
nsecs_t frameTimeNs = systemTime(CLOCK_MONOTONIC);
proxy->syncAndDrawFrame(frameTimeNs, 0, gDisplay.density);
usleep(12000);
}
sleep(5);
delete proxy;
rootNode->decStrong(0);
printf("Success!\n");
return 0;
}
示例2:
static void android_view_GLES20Canvas_insertReorderBarrier(JNIEnv* env, jobject clazz,
jlong rendererPtr, jboolean reorderEnable) {
DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr);
renderer->insertReorderBarrier(reorderEnable);
}