Windows 8 - WordPress.com

advertisement
Дни разработчика 2013
Программа конференции
•
•
•
•
•
•
•
•
•
•
09:30 – 09:35 Открытие конференции. Анонс программы
09:35 – 09:45 Программа BizSpark для разработчиков
09:45 – 10:00 Анонс курсов и конкурсов для разработчиков
10:00 – 11:00 Новые возможности при разработке Windows 8.1 приложений
11:00 – 12:00 Управление процессом разработки программного обеспечения
с помощью Team Foundation Server 2013
12:00 – 12:30 Кофе
12:30 – 13:30 Разработка игр для Windows 8
13:30 – 14:30 Активируй возможности Windows Azure
14:30 – 15:30 Обед
15:30 – 16:30 Новые возможности С++
Наша команда
Виктор Цикунов, DPE Lead
Татьяна Зубец,
AMM
Евгений Вакульчик, Сергей Байдачный, Сергей Поплавский, Елена Харченко,
Андрей Шоханов,
Win8&WP Top Apps Win8&WP Total Apps Главный по Azure
Помощник DPE Lead IT Pro
и многое другое …
BizSpark
BizSpark
• Программа, ориентированная на стартапы:
•
•
•
•
•
Все программное обеспечение Microsoft, бесплатно, на три года
Специализированные события
Покрытие команды до 10 человек
Windows Azure
Дополнительное visability
BizSpark
• Требования и условия:
• Компания или индивидуальный разработчик должны разрабатывать
собственный продукт
• Иметь оборот менее 1 миллиона в год
• Компания не должна быть старше 3 лет
• Нет необходимости выпускать продукт
• Плата не взымается
Анонсы событий и
конкурсов
http://www.microsoft.ua/nebotan
http://www.microsoftvirtualacademy.com
• Язык программирования C#
• Разработка Windows 8 приложений
• Разработка Windows Phone
приложений
• Windows Azure
Курсы для участников BizSpark
• Разработка приложений с использованием Windows Azure
Новые возможности при
разработке Windows 8.1
приложений
Сергей Байдачный
Sergiy.Baydachnyy@Microsoft.com
Windows 8 APIs
Accessibility
Data binding
Live tiles and toast
Input
Controls
HTML5/CSS
XAML
Portable
Geo-location
Direct3D
Direct2D
Direct Write
Local storage
SMS
Skydrive
Sensors
Proximity
Playback
Capture
PlayTo
Streams
Background
transfer
Bing
Canvas
SVG
Syndication
Networking
Azure Mobile
XML and
JSON
Contracts
Xbox Live
Printing
Application
services
Threading/timers
Memory
management
Globalization
Cryptography
Authentication
Windows 8.1 APIs
Accessibility
Data binding
Live tiles and toast
Input
Controls
HTML5/CSS
XAML
Portable
Geo-location
Direct3D
Direct2D
Direct Write
Local storage
SMS
Skydrive
Sensors
Proximity
Playback
Capture
PlayTo
Streams
Background
transfer
Bing
Canvas
SVG
Syndication
Networking
Azure Mobile
XML and
JSON
Contracts
Xbox Live
Printing
Application
services
Threading/timers
Memory
management
Globalization
Cryptography
Authentication
Windows 8.1 APIs
Accessibility
Data binding
Live tiles and toast
Input
Controls
HTML5/CSS
XAML
Speech synthesis
Portable
Geo-location
Point of
service
Direct3D
Direct2D
Direct Write
Local storage
SMS
HTTP
Skydrive
Sensors
Proximity
USB
Playback
Capture
PlayTo
Streams
Background
transfer
Contacts
Bing
HID
WiFi direct
Bluetooth
Canvas
SVG
WebGL
Syndication
Networking
Appointments
Azure Mobile
Printing
3D
printing
Scanning
XML and
JSON
Contracts
PDF
Xbox Live
Application
services
Threading/timers
Memory
management
Globalization
Cryptography
Authentication
Diagnostics
WebView
• Корректная работа с XAML UI
• Поддержка Opacity и RenderTransform
• Поддержка механизмов навигации (Back, Forward,…)
• NavigateToLocalStreamUri
• Поддержка загрузки контента из локальной директории
• Поддержка внешнего resolver
• И многое другое
Демонстрация
WebView
DatePicker и TimePicker
• Рассуждения об индусах
• Немного о контролах:
• Поддерживаются два разных элемента управления DatePicker и
TimePicker
• Различные форматы
• Поддерживается объект типа Calendar
• Форматирование осуществляется с помощью DateTimeFormatter
Демонстрация
DatePicker и TimePicker
RichTextBlock
<RichTextBlock Width="200" Style="{StaticResource BasicRichTextStyle}">
<Paragraph>Hyperlinks let you give readers a visual hint that certain text links to other content.
<Hyperlink NavigateUri="http://dev.windows.com">Read more on the Windows Dev Center</Hyperlink>
... Text in a Hyperlink element is treated like the rest of the text and participates in line breaking.
</Paragraph>
</RichTextBlock>
Демонстрация
RichTextBlock
Дерево в XAML в изображение
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.Render(myElementTree);
var pixels = await renderTargetBitmap.GetPixelsAsync();
var picker = new FileSavePicker();
// Picker setup
var file = await picker.PickSaveFileAsync();
// File validation
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)
{
var encoder = await
BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Rgba8, 100, 0, 96, 96,
await renderTargetBitmap.GetPixelsAsync());
await encoder.FlushAsync();
}
Flyout
• SettingsFlyout – элемент для ленивых
• Flyout
• Всплывающее окошко, которое связано с
одним из элементов интерфейса
• MenuFlyout
• Обычный пункт
• Сепаратор
• Переключатель
• Зачем оно нужно?
Демонстрация
Setting Flyout
Hub
• Создание главного хаба приложения в соответствии с дизайном
• Поддержка семантического зума
• Последовательное размещение элементов с помощью HubSection
Демонстрация
Hub
AppBar
• Поддержка свойств Label и Icon
• Иконки могут быть одного из типов: Font, Bitmap, Path, Symbol
• Поддержка компактного размера
• AppBarButton можно использовать вне AppBar
• Поддержка кнопок, переключателей и разделителей
• Интеграция с элементом управления CommandBar
Другие изменения в элементах управления
• Заголовки для ComboBox, TextBox, PasswordBox и др.
• PlaceholderText для текстовых элементов управления
• Поддержка RequestTheme на уровне элемента
• Событие на вставку текста из буфера
• И многое другое
Новые режимы отображения
• 500 пикселей – новая минимальная ширина приложения
• 320 пикселей – старая ширина, но может поддерживаться
• Может быть несколько окон, открытых из одного приложения
• Более чем два приложения на экране
• Работает ли оно?
Поддержка устройств
• HID
• PoS
• Bluetooth
• USB
• 3D Printers
Новые типы тайлов
• 70 на 70
• 310 на 310
Синтез голоса
// The media object for controlling and playing audio.
MediaElement mediaElement = this.media;
// The object for controlling the speech-synthesis engine (voice).
var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();
// Generate the audio stream from plain text.
SpeechSynthesisStream stream = await
synth.SynthesizeTextToStreamAsync("Hello World");
// Send the stream to the media object.
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();
DirectX
• Динамические шейдера:
•
•
•
•
Unity
Marmalade
Ogre
И др.
Windows Game Developer Features
• Windows 8
• Direct3D 11.1
• XAudio2
• PointerPoint
• MouseLook
• XInput
• C++
• Windows 8.1
• Direct3D11.2
• Tiled Resources
• Scalers & Overlays
• HLSL Shader linker
• 8-25GB packages
• Multi-mon
• Wi-Fi Direct
И многое другое
• Поддержка PDF
• Wi-Fi Direct
• Smart Card security
•…
Вопросы?
Разработка игр для
Windows 8
Сергей Байдачный
Sergiy.Baydachnyy@Microsoft.com
Segoe UI
Fonts, text analysis, layout
2D graphics
Image & video decoding
3D graphics
Segoe UI
HTML5, CSS3 & DirectWrite
HTML5, Direct2D effects,
WIC & Media Foundation
HTML5, CSS3 & Direct2D
Direct3D
DirectCompute & C++AMP
Архитектура графической подсистемы в
Windows 8
Немного о DirectX
Версии DirectX
• Windows XP
DirectX 9 hardware
DirectX 9 API
• Windows Vista DirectX 10 hardware DirectX 10 API
• Windows 7
DirectX 11 hardware DirectX 11 API
Feature levels
• DirectX11 API предлагает унифицированный механизм
разработки приложений
• Feature levels по отношению к оборудованию
• Feature level 9
• Feature level 10
• Feature level 11
DirectX 9 hardware (ARM/power efficient machines)
DirectX 10 hardware (many laptops)
DirectX 11 hardware (high end gaming machines)
DirectX 11.1
• DirectX11.1 это DirectX 11 для Windows 8
• Интеграция в стек технологий платформы
C++
Key Bindings
Feature
Summary
1. Data Types
ref class
Reference type
value class
Value type
interface class
Interface
property
Property with get/set
event
“Delegate property” with add/remove/raise
delegate
Type-safe function pointer
generic
Type-safe generics
gcnew
Garbage-collected allocation
ref new
Reference-counted allocation
^
Strong pointer (“hat” or “handle”)
%
Strong reference
2. Allocation
3. Pointer &
Reference
Поговорим о фреймворках
Open Source Technologies
Box2D
ANGLE
Box2D
• Physics of objects in a 2-D plane
• Ballistics, collisions, rotation, friction, joints,
constraints, motors, ray-queries, etc. of
• Circles, rects, polygons, chains, ropes, etc.
• Used in:
• Angry Birds, Tiny Wings, Cut The Rope, Crayon Physics
Deluxe, Limbo, Rolando, Fantastic Contraption,
Incredibots, Transformice, Happy Wheels, Cocos2D,
etc.
Bullet Physics
• Physics of 3D objects
• Ballistics, collisions, rotation, friction, joints,
constraints, motors, ray-queries, etc.
• Used in: Hydro Thunder: Hurricane, Trials HD
• Has had GPU-accelerated fabric simulation
using DirectCompute for years
ANGLE – Almost Native GL Engine
• Open source OpenGL ES2 API wrapper
• Enables easy transition from iOS or Android
• Used by many popular products
• Originally built on Direct3D9,
• Now updated to Direct3D11 for Windows Store
• Runtime shader compiles work in Windows 8.1
• http://code.google.com/p/angleproject
Cocos2D-x
• Popular engine for sprite games on phones
• 1000s of games already shipped
• Runs on Windows 8 phone, Windows RT,
Windows 8, etc.
• http://www.cocos2d-x.org
OGRE - OO Graphics Rendering Engine
• Full 3D rendering engine
• Rich shader capabilities for photorealism
• Includes native Direct3D module since starting
• Used in: Ankh by Deck13, and Torchlight by
Runic, etc.
• Runs on Windows Phone and Windows 8
Using C#?
• SharpDX
• Efficient C# bindings to DirectX APIs
• Low-level Direct3D access for best C# performance
• Includes basic input, audio, file loading, etc.
Using C#?
• MonoGame
• OSS implementation of the full XNA 4.0 API spec
• which Microsoft contributed to the community
• Used in Armed, Skulls of the Shogun, Galactic Reign
• http://channel9.msdn.com/posts/From-XNA-game-to-Windows-8
Коммерческие решения
Commercial Middleware
Unity 3D
• http://channel9.msdn.com/Events/WindowsCamp/Building-Windows-Games-with-Unity
Agora Hydra
• Authentication & Identity
• Friends List
• Player Stats, Leaderboards, Achievements
• Matchmaking -Real-time and Asynchronous
• Synchronous (real-time) Multiplayer
• Supports Windows Phone too
• http://hydra.agoragames.com/windows
Havok
• Popular physics library
• Now includes Vision 3D rendering engine,
destruction, AI, and cloth modules
• Supports the whole Microsoft ecosystem
• Havok for Windows 8 and Windows Phone 8
Marmalade
• Commercial implementation of OpenGL ES
on Direct3D
• Includes a full native C++ game API set
• Runs on Windows Phone too
• https://www.madewithmarmalade.com/windows8
Game Salad
• Full IDE for game creation
• Asset marketplace
• http://gamesalad.com/creator/windows-8
Вопросы?
Новые возможности С++
Сергей Байдачный
Sergiy.Baydachnyy@Microsoft.com
С++ настолько сложный для
изучения, что мы расширили
его дополнительными
командами
http://isocpp.org
98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
C++ и Visual Studio 2013
• Некоторые возможности С++ 11 (C++0x) уже были в Visual Studio
2010
• Многие возможности С++ 11 были реализованы в Visual Studio
2012
• В Visual Studio 2013 продолжена работа над реализацией С++ 11 и
некоторых возможностей С++ 14
• С++ 14 дополняет и завершает С++ 11
Перейдем к возможностям C++
Инициализация: раньше
• Инициализация массива возможна с помощью {}
• Но инициализация других типов отличается между собой
•
•
•
•
•
int i=0;
int k(2);
Person p;
Person p();
Person p(“Sergey”, “Baydachnyy”);
Инициализация: сейчас
• int i{2};
• Person p{};
• Person p{“Sergiy”,”Baydachnyy”};
• std::vector<int> v{1,2,3,4};
Демонстрация
Инициализация
Конструкторы
• Компилятор способен генерировать конструкторы «по
умолчанию»
• Default, Copy, Move
• Как только Вы пишите хотя бы один конструктор, то теряете все «по
умолчанию»
• Невозможность вызова одного конструктора из другого приводит
к дублированию кода
• С++ 11 позволяет вызывать один конструктор из другого
=default
• Возвращает авто сгенерированный конструктор по умолчанию
class Person
{
public:
Person()=default;
Person(char* firstname, char* lastname);
~Person();
};
=delete
• Применимо к методам и конструкторам
• Позволяет запретить перегрузку метода
class type {
public:
type( const type& ) = delete;
type& operator=( const type& ) = delete;
type() = default;
// restore suppressed default constructor
};
void bar( long long );
// accept long long…
void bar( long ) = delete;
// … but nothing else
class custom_regex_iterator {// stores a pointer to its regex
public: // …
custom_regex_iterator( const regex& );
// lvalues only please
custom_regex_iterator( const regex&& ) = delete;
// no rvalues need apply
};
Демонстрация
Конструкторы
using
template<class T> struct Vec { typedef vector<T, MyAlloc<T>> type; };
Vec<int>::type v;
// sample usage
template<class T> void f( typename Vec<T>::type& );
// non-deducible
f<int>( v );
template<class T> using Vec = vector<T, MyAlloc<T>>;
Vec<int> v;
template<class T> void f( Vec<T>& );
f( v );
_t
_t
typename
typename
// sample usage
// deducible
::type
::type
Демонстрация
using
Умные указатели
• Что такое delete?
• std::shared_ptr
• std::unique_ptr
• Использовать заголовочный файл memory
• C++ 11 представляет make_shared
• C++ 14 представляет make_unique
• Ключевое слово auto еще больше упрощает процесс создания
умных указателей
• Помним о nullptr
Демонстрация
Умные указатели
Строковые литералы
• В С++ два вида строк: std::string, char *
• Любые спецсимволы нужно задавать с помощью обратной косой
черты (\”, \\, \n, \r,…)
• С++ 11 позволяет упростить запись строковых литералов
• R”(все, что \Вы “ хотите )”
• Сохраняются все разделители в строке (включая переход на другую
строку)
• В случае, если строка содержит круглые скобки, то можно использовать
свой разделитель
• Имеет смысл только для )”
• R”MyS(…………….)MyS”
Демонстрация
Строковые литералы
Изменения в шаблонных функциях
• Параметры по умолчанию могли присутствовать в шаблонных
классах
• В шаблонных функциях параметров по умолчанию не было
• С++ 11 позволяет писать что-то подобное
• template <typename T, int n=1> T& increment (T& val)
Демонстрация
Параметры шаблонных функций
Явное приведение типов
• Ключевое слово explicit доступно:
• При создании конструкторов
• При создании функций приведения типов
• Явное приведение типов можно выполнить с помощью
static_cast<>
Демонстрация
Явное преобразование
Variadic templates
• Рассмотрим make_shared
• auto p = make_shared<Person>(“Sergiy”,”Baydachnyy”);
• Количество параметров не определено заранее
• Типы могут быть совершенно разные
• Примером может служит std::tuple
Variadic template
• Создание класса
template <class… Ts> class MyClass
{
//class declaration
};
• Создание функции
template <class… Ts> void f(Ts… vals)
{
//method definition
}
Вопросы?
Download