Criar um aplicativo OpenGL ES no Android e iOSBuild an OpenGL ES application on Android and iOS

Ao instalar a opção Visual C++ para Desenvolvimento Móvel Multiplataforma, você pode criar soluções e projetos do Visual Studio para aplicativos iOS e Android que compartilhem código comum.When you install the Visual C++ for Cross-Platform Mobile Development option, you can create Visual Studio solutions and projects for iOS apps and Android apps that share common code. Este tópico o conduz pelo modelo de solução que cria tanto um aplicativo iOS simples quanto um aplicativo de Atividade Nativa do Android.This topic guides you through a solution template that creates both a simple iOS app and an Android Native Activity app. Os aplicativos têm código C++ em comum que usa o OpenGL ES para exibir o mesmo cubo de rotação animado em cada plataforma.The apps have C++ code in common that uses OpenGL ES to display the same animated rotating cube on each platform. O OpenGL ES (GLES [OpenGL para Sistemas Incorporados]) é uma API gráfica 2D e 3D que tem suporte em vários dispositivos móveis.OpenGL ES (OpenGL for Embedded Systems or GLES) is a 2D and 3D graphics API that is supported on many mobile devices.

Requisitos Requirements
Criar um novo projeto de Aplicativo OpenGLES Create a new OpenGLES Application project
Compilar e executar o aplicativo Android Build and run the Android app
Compilar e executar o aplicativo iOS Build and run the iOS app
Personalizar seus aplicativosCustomize your apps

RequisitosRequirements

Antes de criar um aplicativo OpenGL ES para iOS e Android, você precisará garantir que tenha atendido a todos os requisitos do sistema.Before you can create an OpenGL ES app for iOS and Android, you must make sure you've met all system requirements. Você deve instalar a opção o Visual C++ para Desenvolvimento Móvel Multiplataforma no Visual Studio 2015.You must install the Visual C++ for Cross-Platform Mobile Development option in Visual Studio 2015. Verifique se os SDKs e as ferramentas de terceiros necessários estão incluídos na instalação e se o Emulador do Visual Studio para Android está instalado.Make sure that the required third-party tools and SDKs are included in the installation, and that the Visual Studio Emulator for Android is installed. Para saber mais e obter instruções detalhadas, confira Instalar o Visual C++ para desenvolvimento móvel de plataforma cruzada.For more information and detailed instructions, see Install Visual C++ for cross-platform mobile development. Para compilar e testar o aplicativo iOS, você precisará de um computador Mac configurado de acordo com as instruções de instalação.To build and test the iOS app, you'll need a Mac computer, set up according to the installation instructions. Para saber mais sobre como configurar para desenvolvimento do iOS, confira Instalar e configurar ferramentas para compilar usando iOSFor more information about how to set up for iOS development, see Install and configure tools to build using iOS

Criar um novo projeto de Aplicativo OpenGLESCreate a new OpenGLES Application project

Neste tutorial, primeiro você criará um novo projeto de Aplicativo OpenGL ES e, em seguida, compilará e executará o aplicativo padrão no Emulador do Visual Studio para Android.In this tutorial, you first create a new OpenGL ES Application project and then build and run the default app in the Visual Studio Emulator for Android. Em seguida, compilará o aplicativo para iOS e executará o aplicativo no simulador de iOS.Next you build the app for iOS and run the app in the iOS Simulator.

Para criar um novo projetoTo create a new project

  1. Abra o Visual Studio.Open Visual Studio. Na barra de menus, escolha Arquivo, Novo, Projeto.On the menu bar, choose File, New, Project.

  2. Na caixa de diálogo Novo Projeto, em Modelos, escolha Visual C++, Multiplataforma e, em seguida, escolha o modelo Aplicativo OpenGLES (Android, iOS).In the New Project dialog box, under Templates, choose Visual C++, Cross Platform, and then choose the OpenGLES Application (Android, iOS) template.

  3. Nomeie o aplicativo como MyOpenGLESApp e, em seguida, escolha OK.Give the app a name like MyOpenGLESApp, and then choose OK.

    Novo projeto de Aplicativo OpenGLESNew OpenGLES Application project

    O Visual Studio cria a nova solução e abre o Gerenciador de Soluções.Visual Studio creates the new solution and opens Solution Explorer.

    MyOpenGLESApp no Gerenciador de SoluçõesMyOpenGLESApp in Solution Explorer

    A nova solução de Aplicativo OpenGL ES inclui três projetos de biblioteca e dois projetos de aplicativo.The new OpenGL ES Application solution includes three library projects and two application projects. A pasta de Bibliotecas inclui um projeto de código compartilhado e dois projetos específicos da plataforma que fazem referência ao código compartilhado:The Libraries folder includes a shared code project and two platform-specific projects that reference the shared code:

  • MyOpenGLESApp.Android.NativeActivity contém as referências e o código de cola que implementa seu aplicativo como uma Atividade Nativa no Android.MyOpenGLESApp.Android.NativeActivity contains the references and glue code that implements your app as a Native Activity on Android. A implementação dos pontos de entrada do código de associação está em main.cpp, que inclui o código compartilhado comum em MyOpenGLESApp.Shared.The implementation of the entry points from the glue code are in main.cpp, which includes the common shared code in MyOpenGLESApp.Shared. Os cabeçalhos pré-compilados estão em pch.h.Precompiled headers are in pch.h. Esse projeto de aplicativo de Atividade Nativa é compilado em um arquivo (.so) de biblioteca compartilhada que é obtido pelo projeto de MyOpenGLESApp.Android.Packaging.This Native Activity app project is compiled into a shared library (.so) file which is picked up by the MyOpenGLESApp.Android.Packaging project.

  • MyOpenGLESApp.iOS.StaticLibrary cria um arquivo (.a) da biblioteca estática do iOS que contém o código compartilhado no MyOpenGLESApp.Shared.MyOpenGLESApp.iOS.StaticLibrary creates an iOS static library (.a) file that contains the shared code in MyOpenGLESApp.Shared. Ele está vinculado ao aplicativo criado pelo projeto MyOpenGLESApp.iOS.Application.It is linked to the app created by the MyOpenGLESApp.iOS.Application project.

  • MyOpenGLESApp.Shared contém o código compartilhado que funciona em várias plataformas.MyOpenGLESApp.Shared contains the shared code that works across platforms. Ele utiliza macros de pré-processador para compilação condicional do código específico da plataforma.It uses preprocessor macros for conditional compilation of platform-specific code. O código compartilhado é escolhido pela referência de projeto no MyOpenGLESApp.Android.NativeActivity e no MyOpenGLESApp.iOS.StaticLibrary.The shared code is picked up by project reference in both MyOpenGLESApp.Android.NativeActivity and MyOpenGLESApp.iOS.StaticLibrary.

    A solução tem dois projetos para compilar aplicativos para as plataformas Android e iOS:The solution has two projects to build the apps for the Android and iOS platforms:

  • MyOpenGLESApp.Android.Packaging cria o arquivo .apk para implantação em um emulador ou dispositivo Android.MyOpenGLESApp.Android.Packaging creates the .apk file for deployment on an Android device or emulator. Isso contém os recursos e o arquivo AndroidManifest.xml no qual as propriedades do manifesto são definidas.This contains the resources and AndroidManifest.xml file where you set manifest properties. Também contém o arquivo build.xml que controla o processo de build Ant.It also contains the build.xml file that controls the Ant build process. Ele é definido como o projeto de inicialização por padrão, para que possa ser implantado e executado diretamente no Visual Studio.It's set as the startup project by default, so that it can be deployed and run directly from Visual Studio.

  • MyOpenGLESApp.iOS.Application contém os recursos e o código de associação Objective-C para criar um aplicativo iOS vinculado ao código de biblioteca estática C++ em MyOpenGLESApp.iOS.StaticLibrary.MyOpenGLESApp.iOS.Application contains the resources and Objective-C glue code to create an iOS app that links to the C++ static library code in MyOpenGLESApp.iOS.StaticLibrary. Esse projeto cria um pacote de build que é transferido para seu Mac pelo Visual Studio e pelo agente remoto.This project creates a build package that is transferred to your Mac by Visual Studio and the remote agent. Quando você compila este projeto, o Visual Studio envia os arquivos e os comandos para compilar e implantar seu aplicativo no Mac.When you build this project, Visual Studio sends the files and commands to build and deploy your app on the Mac.

Compilar e executar o aplicativo AndroidBuild and run the Android app

A solução criada pelo modelo define o aplicativo Android como o projeto padrão.The solution created by the template sets the Android app as the default project. Você pode compilar e executar esse aplicativo para verificar sua instalação e configuração.You can build and run this app to verify your installation and setup. Para um teste inicial, execute o aplicativo em um dos perfis de dispositivo instalados pelo Emulador do Visual Studio para Android.For an initial test, run the app on one of the device profiles installed by the Visual Studio Emulator for Android. Se você preferir testar seu aplicativo em outro destino, poderá carregar o emulador de destino ou conectar o dispositivo ao computador.If you prefer to test your app on another target, you can load the target emulator or connect the device to your computer.

Para compilar e executar o aplicativo de Atividade Nativa AndroidTo build and run the Android Native Activity app

  1. Se ainda não estiver selecionado, escolha x86 na lista suspensa Plataformas da Solução.If it is not already selected, choose x86 from the Solution Platforms drop-down list.

    Definir a Plataforma de Solução como x86Set the Solution Platform to x86

    Use x86 para ter o Emulador do Android para Windows como destino.Use x86 to target the Android Emulator for Windows. Se você tiver um dispositivo como destino, escolha a plataforma de solução com base no processador do dispositivo.If you are targeting a device, choose the solution platform based on the device processor. Se a lista Plataformas da Solução não for exibida, escolha Plataformas da Solução na lista Adicionar/Remover Botões e, em seguida, escolha sua plataforma.If the Solution Platforms list isn't displayed, choose Solution Platforms from the Add/Remove Buttons list, and then choose your platform.

  2. No Gerenciador de Soluções, abra o menu de atalho do projeto MyOpenGLESApp.Android.Packaging e, em seguida, escolha Compilar.In Solution Explorer, open the shortcut menu for MyOpenGLESApp.Android.Packaging project and then choose Build.

    Compilar um projeto de empacotamento AndroidBuild Android Packaging Project

    A janela Saída exibe a saída do processo de build para a biblioteca compartilhado Android e o aplicativo Android.The Output window displays the output of the build process for the Android shared library and the Android app.

    Saída de build para projetos AndroidBuild Output for Android projects

  3. Escolha um dos perfis de Telefone Android do Emulador do VS (x86) como o destino de implantação.Choose one of the VS Emulator Android Phone (x86) profiles as your deployment target.

    Escolha o destino da implantaçãoChoose deployment target

    Se você tiver instalado outros emuladores ou conectado um dispositivo Android, poderá escolhê-los na lista suspensa de destino de implantação.If you have installed other emulators or connected an Android device, you can choose them in the deployment target drop-down list. Para executar o aplicativo, a Plataforma de Solução compilada deverá corresponder à plataforma do dispositivo de destino.To run the app, the built Solution Platform must match the platform of the target device.

  4. Pressione F5 para iniciar a depuração ou Shift+F5 para iniciar sem depuração.Press F5 to start debugging, or Shift+F5 to start without debugging.

    O Visual Studio inicia o emulador, que leva vários segundos para carregar e implantar o código.Visual Studio starts the emulator, which takes several seconds to load and deploy your code. É assim que o aplicativo aparece no Emulador do Visual Studio para Android.Here's how the app appears in the Visual Studio emulator for Android.

    Aplicativo em execução no Emulador do AndroidApp running in Android Emulator

    Quando o aplicativo tiver sido iniciado, você poderá definir pontos de interrupção e usar o depurador para executar o código em etapas, examinar os locais e inspecionar os valores.Once your app has started, you can set breakpoints and use the debugger to step through code, examine locals, and watch values.

  5. Pressione Shift+F5 para parar a depuração.Press Shift+F5 to stop debugging.

    O emulador é um processo separado que continua sendo executado.The emulator is a separate process that continues to run. É possível editar, compilar e implantar o código várias vezes no mesmo emulador.You can edit, compile, and deploy your code multiple times to the same emulator. Seu aplicativo aparece na coleção de aplicativo no emulador e pode ser iniciado diretamente de lá.Your app appears in the app collection on the emulator, and it can be started from there directly.

    Os projetos de biblioteca e o aplicativo de Atividade Nativa do Android gerados colocam o código C++ compartilhados em uma biblioteca dinâmica que inclui o código de "associação" para fazer interface com a plataforma Android.The generated Android Native Activity app and library projects put the C++ shared code in a dynamic library that includes "glue" code to interface with the Android platform. Isso significa que a maioria do código do aplicativo está na biblioteca e o manifesto, os recursos e as instruções de build estão no projeto de empacotamento.This means most of the app code is in the library, and the manifest, resources, and build instructions are in the packaging project. O código compartilhado é chamado de main.cpp no projeto NativeActivity.The shared code is called from main.cpp in the NativeActivity project. Para obter mais informações sobre como programar uma Atividade Nativa do Android, consulte a página Conceitos do NDK do Android Developer.For more information about how to program an Android Native Activity, see the Android Developer NDK Concepts page.

    O Visual Studio compila projetos de Atividade Nativa do Android usando o NDK do Android, que usa Clang como o conjunto de ferramentas de plataforma.Visual Studio builds Android Native Activity projects by using the Android NDK, which uses Clang as the platform toolset. O Visual Studio mapeia as propriedades no projeto NativeActivity para as opções de linha de comando e as opções usadas para compilar, vincular e depurar na plataforma de destino.Visual Studio maps the properties in the NativeActivity project to the command-line switches and options that are used to compile, link, and debug on the target platform. Para obter detalhes, abra a caixa de diálogo Páginas de Propriedade para o projeto MyOpenGLESApp.Android.NativeActivity.For details, open the Property Pages dialog for the MyOpenGLESApp.Android.NativeActivity project. Para obter mais informações sobre as opções de linha de comando, consulte o Manual do usuário do compilador Clang.For more information about the command line switches, see the Clang Compiler User's Manual.

Compilar e executar o aplicativo iOSBuild and run the iOS app

O projeto de aplicativo iOS é criado e editado no Visual Studio, porém, devido a restrições de licença, deve ser compilado e implantado em um Mac.The iOS app project is created and edited in Visual Studio, but because of licensing restrictions, it must be built and deployed from a Mac. O Visual Studio comunica-se com um agente remoto em execução no Mac para transferir arquivos de projeto e executar comandos de build, implantação e depuração.Visual Studio communicates with a remote agent running on the Mac to transfer project files and execute build, deployment, and debugging commands. Você deve instalar e configurar seu Mac e o Visual Studio para comunicação antes de compilar o aplicativo iOS.You must set up and configure your Mac and Visual Studio to communicate before you can build the iOS app. Para obter instruções detalhadas, confira Instalar e configurar as ferramentas para compilar usando iOS.For detailed instructions, see Install and configure tools to build using iOS. Depois que o agente remoto estiver em execução e o Visual Studio estiver emparelhado com o Mac, você poderá compilar e executar o aplicativo do iOS para verificar sua instalação e configuração.Once the remote agent is running and Visual Studio is paired with your Mac, you can build and run the iOS app to verify your installation and setup.

Para compilar e executar o aplicativo iOSTo build and run the iOS app

  1. Verifique se o agente remoto está em execução no seu Mac e se o Visual Studio está emparelhado com o agente remoto.Verify that the remote agent is running on your Mac, and that Visual Studio is paired to the remote agent. Para iniciar o agente remoto, abra uma janela do aplicativo Terminal e digite vcremote.To start the remote agent, open a Terminal app window and enter vcremote. Para obter mais informações, consulte Configurar o agente remoto no Visual Studio.For more information, see Configure the remote agent in Visual Studio.

    Janela do Terminal Mac executando vcremoteMac Terminal window running vcremote

  2. Se ainda não estiver selecionado, escolha x86 na lista suspensa Plataformas da Solução.If it is not already selected, choose x86 from the Solution Platforms drop-down list.

    Definir a Plataforma de Solução como x86Set the Solution Platform to x86

    Use x86 para ter o Simulador de iOS como destino.Use x86 to target the iOS Simulator. Se você tiver um dispositivo iOS como destino, escolha a plataforma da solução com base no processador do dispositivo (normalmente, um processador ARM).If you are targeting an iOS device, choose the solution platform based on the device processor (usually an ARM processor). Se a lista Plataformas da Solução não for exibida, escolha Plataformas da Solução na lista Adicionar/Remover Botões e, em seguida, escolha sua plataforma.If the Solution Platforms list isn't displayed, choose Solution Platforms from the Add/Remove Buttons list, and then choose your platform.

  3. No Gerenciador de Soluções, abra o menu de atalho para o projeto MyOpenGLESApp.iOS.Application e escolha Compilar.In Solution Explorer, open the shortcut menu for the MyOpenGLESApp.iOS.Application project and choose Build.

    Compilar o projeto de Aplicativo iOSBuild iOS Application project

    A janela Saída exibe a saída do processo de build para a biblioteca estática do iOS e o aplicativo iOS.The Output window displays the output of the build process for the iOS static library and the iOS app. No Mac, a janela Terminal executando o agente remoto mostra a atividade de comando e transferência de arquivo.On the Mac, the Terminal window running the remote agent shows the command and file transfer activity.

    No computador Mac, você será solicitado a aceitar uma solicitação de assinatura de código.On your Mac computer, you may be prompted at accept a code signing request. Escolha Permitir para continuar.Choose Allow to continue.

  4. Escolha Simulador de iOS na barra de ferramentas para executar o aplicativo no Simulador de iOS no Mac.Choose iOS Simulator on the toolbar to run the app in the iOS Simulator on your Mac. Pode demorar um pouco para o simulador ser iniciado.It may take a moment to start the simulator. Poderá ser necessário trazer o simulador para o primeiro plano no Mac para ver a saída dele.You may have to bring the simulator to the foreground on your Mac to see its output.

    Aplicativo em execução no Simulador de iOSApp running on iOS Simulator

    Quando seu aplicativo tiver sido iniciado, você poderá definir pontos de interrupção e usar o depurador do Visual Studio para examinar locais, consultar a pilha de chamadas e inspecionar os valores.Once your app has started, you can set breakpoints and use the Visual Studio debugger to examine locals, see the call stack, and watch values.

    Depurador no ponto de interrupção no aplicativo iOSDebugger at breakpoint in iOS app

  5. Pressione Shift+F5 para parar a depuração.Press Shift+F5 to stop debugging.

    O Simulador de iOS é um processo separado que continua a ser executado no Mac.The iOS Simulator is a separate process that continues to run on your Mac. É possível editar, compilar e implantar o código várias vezes para a mesma instância do Simulador de iOS.You can edit, compile, and deploy your code multiple times to the same iOS Simulator instance. Você também pode executar o código diretamente no simulador após ele ter sido implantado.You can also run your code directly in the simulator after it has been deployed.

    Os projetos de aplicativo e biblioteca do iOS gerados colocam o código C++ em uma biblioteca estática que implementa somente o código compartilhado.The generated iOS app and library projects put the C++ code in a static library that implements only the shared code. A maior parte do código do aplicativo esta no projeto de Application.Most of the application code is in the Application project. As chamadas para o código de biblioteca compartilhada neste projeto de modelo são feitas no arquivo GameViewController.m.The calls to the shared library code in this template project are made in the GameViewController.m file. Para compilar seu aplicativo iOS, o Visual Studio usa o conjunto de ferramentas de plataforma do Xcode, que exige a comunicação com um cliente remoto em execução em um Mac.To build your iOS app, Visual Studio uses the Xcode platform toolset, which requires communication with a remote client that is running on a Mac.

    O Visual Studio transfere os arquivos de projeto e envia comandos para o cliente remoto para compilar o aplicativo usando Xcode.Visual Studio transfers the project files and sends commands to the remote client to build the app using Xcode. O cliente remoto envia informações de status de build de volta ao Visual Studio.The remote client sends build status information back to Visual Studio. Quando o aplicativo tiver sido compilado com êxito, você poderá usar o Visual Studio para enviar comandos para executar e depurar o aplicativo.When the app has built successfully, you can use Visual Studio to send commands to run and debug the app. O depurador do Visual Studio controla o aplicativo em execução no Simulador de iOS em execução no Mac ou em um dispositivo iOS anexado.The debugger in Visual Studio controls the app running in the iOS Simulator running on your Mac, or on an attached iOS device. O Visual Studio mapeia as propriedades no projeto StaticLibrary para as opções de linha de comando e as opções usadas para compilar, vincular e depurar na plataforma iOS de destino.Visual Studio maps the properties in the StaticLibrary project to the command-line switches and options that are used to build, link, and debug on the target iOS platform. Para obter detalhes de opção de linha de comando do compilador, abra a caixa de diálogo Páginas de Propriedade para o projeto MyOpenGLESApp.iOS.StaticLibrary.For compiler command-line option details, open the Property Pages dialog for the MyOpenGLESApp.iOS.StaticLibrary project.

Personalizar seus aplicativosCustomize your apps

Você pode modificar o código C++ compartilhado para adicionar ou alterar funcionalidade comum.You can modify the shared C++ code to add or change common functionality. Você deve alterar as chamadas para o código compartilhado para corresponder aos projetos MyOpenGLESApp.Android.NativeActivity e MyOpenGLESApp.iOS.Application.You must change the calls to the shared code in the MyOpenGLESApp.Android.NativeActivity and MyOpenGLESApp.iOS.Application projects to match. Você pode usar macros de pré-processador para especificar seções específicas de plataforma no seu código comum.You can use preprocessor macros to specify platform-specific sections in your common code. A macro do pré-processador __ANDROID__ é predefinida ao compilar para Android.The preprocessor macro __ANDROID__ is predefined when you build for Android. A macro do pré-processador __APPLE__ é predefinida ao compilar para iOS.The preprocessor macro __APPLE__ is predefined when you build for iOS.

Para ver o IntelliSense para uma plataforma de projeto específica, escolha o projeto na lista suspensa do seletor de contexto na barra de Navegação na parte superior da janela do editor.To see the IntelliSense for a particular project platform, choose the project in the context switcher dropdown in the Navigation bar at the top of the editor window.

Lista suspensa do Seletor de Contexto do Projeto no EditorProject Context Switcher dropdown in Editor

Problemas do IntelliSense no projeto atual são marcados com uma linha ondulada vermelha.IntelliSense issues in the current project are marked with a red wavy line. Problemas em outros projetos são marcados com uma linha ondulada roxa.Issues in other projects are marked with a purple wavy line. Por padrão, o Visual Studio não dá suporte a coloração de código nem a arquivos IntelliSense para Java ou Objective-C.By default, Visual Studio does not support code colorization or IntelliSense for Java or Objective-C files. No entanto, você ainda pode modificar os arquivos de origem e alterar os recursos para definir o nome, o ícone e outros detalhes de implementação do aplicativo.However, you can still modify the source files and change the resources to set your application name, icon, and other implementation details.