Trendy v přenosných počítačích vypozorované na CESu

19. 1. 2021

Sdílet

Autor: Lenovo
Letošní CES ukázal, jaké inovace v brzké době čekají segment notebooků.

Letošní CES možná proběhl jen virtuálně, přesto byl přehlídkou počítačových inovací, o to víc těch mobilních. Intel, AMD i Nvidia oznámili nové CPU i GPU pro notebooky, které se stanou základem nové generace špičkových strojů prakticky všech hlavních výrobců. Sice tentokrát nebylo k vidění tolik futuristických konceptů jako během minulých ročníků, některé funkce a trendy jsou však příslibem toho, že zájemce o notebooky čeká zářná budoucnost a možnost pestrého výběru.

Větší výběr displejů

Jeden z nejzajímavějších trendů se letos týkal vylepšování displejů notebooků, nejen těch herních. A to výrazně! Většina herních notebooků dnes nabízí coby standard konfiguraci 1080p / 60Hz anebo prémiové 4K / 60Hz, ve formátu 16:9. Do budoucna však budeme mít výběr daleko pestřejší. Tím vůbec nejlákavějším se jeví notebooky s 1440p displeji, které mezi jinými oznámili Lenovo, Acer, Razer i Asus. Většina výrobců zároveň zvyšuje obnovovací frekvenci. Displeje s rozlišením 1080p a frekvencí 144Hz bývaly donedávna luxusem, v noteboocích jako jsou MSI Stealth 15M, Dell Alienware m17, Acer Predator Triton 300 SE nebo nový Blade od Razeru se však stanou standardem. Krom nich na CESu bylo k vidění i několik notebooků nabízejících ohromující konfiguraci 1440p / 240Hz. A pro zajímavost, Lenovo Legion 7 nabízí formát 16:10, HP Elite Folio zase 3:2…

Lepší webkamery

S nástupem trendu práce z domova není překvapením, že výrobci zapracovali také na webkamerách. Jejich dosud převažující rozlišení 720p pomalu začíná nahrazovat 1080p. V čele inovací na tomto poli stojí HP se svou řadou na práci orientovaných notebooků. Například Elite Dragonfly Max se může pochlubit 5MP webkamerou s manuálním vypínačem (kvůli bezpečnosti) a čtyřmi mikrofony pro lepší zvuk, který optimalizuje ještě řada nastavení využívajících umělé inteligence. Vedle toho HP Envy 14 pro běžné uživatele má sice standardní 720p webkameru, ale nabízí tzv. „HP Enhanced Lightning“ pro vaše lepší nasvícení.

Rychlejší a chladnější notebooky

Za zmínku stojí taky technologie Resizable BAR a rostoucí popularita materiálů z tekutých kovů. První díky funkci Smart Access Memory umožňuje využití celého rozsahu paměti GPU procesorem počítače – výsledný efekt pak záleží na typu hry, kterou hrajete, nebo rozlišení. Testy však ukazují, že výkon se může zlepšit až o 10 %. Nově ho bude díky grafikám GeForce RTX řady 30 možno využít i na noteboocích a postupně se z technologie nejspíš stane standard. Zájem vzbuzuje rovněž využití tekutých kovů, zejména kvůli jejich ochlazovací schopnosti. Masové produkci dosud bránily problémy související právě s jejich tekutostí, výrobci se tak zaměřili na to, jak zabránit možnému vytékání. A první sklízejí úspěchy. Notebooky Lenovo Legion, stejně jako už řada ROG od Asus už s tekutými kovy pracují.

zabbix_tip

Asus ROG XG Mobile

Asus ROG Flow X13 je drobný třináctipalcový herní notebook vážící zhruba kilo a čtvrt. Navzdory jeho útlým rozměrům Asus tvrdí, že Flow X13 dokáže předčit váhově těžší konkurenci výkonově srovnatelnou se stolními počítači. Jak? S přídavným dockem ROG XG Mobile. Samotný Flow X13 je vybaven procesorem Ryzen 9 5980HS a grafikou GeForce GTX 1650 vhodnou pro méně náročné hry. XG Mobile však v sobě ukrývá novou GeForce RTX 3080 a několik užitečných portů. Zvýšení herního výkonu notebooku externím grafickým dockem není nic nového, většina dosavadních pokusů však byla rozměrově objemnější, jelikož byly vybaveny velkými kartami primárně určenými pro stolní počítače. RTX 3080 je oproti tomu modelem mobilním, takže se vleze do tenkého docku kilové váhy. Ve speciálním pouzdru, které Asus pro obě zařízení nachystalo, je tak s sebou můžete nosit pohodlně celý den bez obav z toho, že si odrovnáte záda.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »