Rendering 2D com OpenGL e interface gráfica em Qt
|
|
|
- Gabriel Macedo Laranjeira
- 7 Há anos
- Visualizações:
Transcrição
1 Rendering 2D com OpenGL e interface gráfica em Qt
2 Qt Framework multiplataforma para desenvolvimento de interfaces gráficas em C++ 2
3 Ferramentas Qt Creator IDE (Ambiente Integrado de Desenvolvimento) multiplataforma, desenhado para as necessidades dos desenvolvedores de Qt. Qt Designer Ferramenta gráfica de criação de interfaces incluída no Qt Creator. 3
4 Módulos 4
5 Hello World! #include <qapplication.h> #include <qpushbutton.h> int main( int argc, char **argv ) { QApplication a( argc, argv ); QPushButton hello( "Hello world!", 0 ); hello.resize( 100, 30 ); } a.setmainwidget( &hello ); hello.show(); return a.exec(); 5
6 Signals e Slots Mecanismo de comunicação entre objetos QT Um sinal é emitido quando algum evento particular ocorre. Os widgets do QT já possuem muitos sinais predefinidos, mas sempre podemos adicionar nossos próprios sinais às nossas subclasses. Não devem ser implementados; Sempre retornam void; Devem ser chamados com emit signal_name(parameter), quando necessário. Um slot é uma função chamada em resposta a um sinal em particular. Novamente, os widgets do QT já possuem muitos slots predefinidos, mas comumente criamos nossos próprios slots para lidar com os sinais que nos interessam. A conexão entre signals e slots é feita com connect, como por exemplo: QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int))); 6
7 Signals e Slots class MyClass : public QObject { Q_OBJECT //Macro obrigatória, sem ponto-e-vírgula... signals: void somethinghappened();... public slots: void slotdosomething();... private slots: void slotdosomethinginternal();... }; 7
8 OpenGL API para interface com hardware gráfico, independente de plataforma e de sistemas de janelas. 8
9 Rendering Pipeline Sequência de etapas para renderizar (desenhar) objetos Etapas programáveis Etapas opcionais 9
10 Transformações 10
11 Projeção perspectiva x Projeção ortográfica 11
12 Projeção perspectiva x Projeção ortográfica P = f aspect f far + near 2 near far near far near far , onde f = cot fovy 2 QMatrix4x4 view; view.perspective(fovy,aspect, near,far); O = 2 right left right + left 0 0 right left 2 top + bottom 0 top bottom top bottom 2 far + near far near far near QMatrix4x4 view; view.ortho(left,right, bottom,top,near,far); 12
13 Vertex Shader Processa VÉRTICES individualmente. Entrada: atributos de vértice. layout( location = #) in type var_name; Saída built-in: gl_position Uso: Tipicamente para realizar transformações geométricas para o espaço de projeção, e algumas vezes para realizar iluminação por vértice. 13
14 Vertex Shader #version 330 core layout( location = 0 ) in vec3 vertexpos; uniform mat4 transformmatrix; void main() { gl_position = transformmatrix * vec4( vertexpos, 1 ); } 14
15 Fragment Shader Processa FRAGMENTOS individualmente, resultantes do processo de rasterização. Um fragmento de entrada -> um fragmento de saída. Saída: um valor de depth (depth value) e zero ou mais cores. Uso: Tipicamente para realizar iluminação por fragmento. 15
16 Fragment Shader #version 330 core uniform vec3 color; out vec3 finalcolor; void main() { finalcolor = color; } 16
17 QT + OpenGL Classe QOpenGLWidget Provê funcionalidades para desenhar utilizando OpenGL Herde da classe QOpenGLWidget (e possivelmente de QOpenGLFunctions) e implemente os métodos: void initializegl() override; void paintgl() override; void resizegl(int width, int height) override; Implemente os eventos de mouse que forem necessários para a sua aplicação: void mousepressevent(qmouseevent *) override; void mousemoveevent(qmouseevent *event) override; void mousereleaseevent(qmouseevent *event) override; 17
18 QT + OpenGL QOpenGLShaderProgram Encapsula compilação e linkagem de shaders QOpenGLShaderProgram* program = new QOpenGLShaderProgram(); program->addshaderfromsourcecode(qopenglshader::vertex, vertexshadersource); program->addshaderfromsourcecode(qopenglshader::fragment, fragmentshadersource); program->link(); QOpenGLBuffer Encapsula criação e gerenciamento de OpenGL buffer objects QOpenGLBuffer pointsbuffer; pointsbuffer.create(); pointsbuffer.bind(); pointsbuffer.allocate( &points[0], (int)points.size()*sizeof(qvector3d) ); 18
19 QT + OpenGL Desenhando: program->bind(); glclearcolor(0, 0, 0, 1); glclear(gl_color_buffer_bit); if(!points.empty() && pointsbuffer.iscreated()) { pointsbuffer.bind(); pointsbuffer.allocate( &points[0],(int)points.size()*sizeof(qvector3d) ); program->enableattributearray(0); program->setattributebuffer(0,gl_float,0,3,sizeof(qvector3d)); program->setuniformvalue("color", QVector3D(1,0,0)); } gldrawarrays(gl_line_strip, 0, (int)points.size()); 19
Principais classes e conceitos básicos de Qt. Danilo Freire de Souza Santos
Começandoa programarcom Qt Principais classes e conceitos básicos de Qt Danilo Freire de Souza Santos Roteiro Hello World Projetos em Qt Signals e Slots Modelo de Objetos Hello World Começando do zero
Básico, Ferramentas e o Primeiro Programa em Qt
Conteúdo 1 Básico, Ferramentas e o Primeiro Programa em Qt 3 1.1 Primeiro Programa.......................... 3 1.1.1 Compilando o programa................... 4 1.2 Layouts................................
Case de uso: Desenvolvimento de um Infotainment System com Qt WebEngine e Yocto. Luis Gustavo S. Barreto
Case de uso: Desenvolvimento de um Infotainment System com Qt WebEngine e Yocto Luis Gustavo S. Barreto Sobre mim 1. Introdução 2. Yocto 3. Qt WebEngine 4. Qt WebChannel 5.
Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...
Sumário Prefácio...15 Capítulo 1 Introdução...17 Capítulo 2 Instalação...22 2.1 Visão Geral das Bibliotecas OpenGL...22 2.2 Bibliotecas Necessárias para Execução...24 2.3 Bibliotecas Necessárias para Compilação...24
Introdução a OpenGL. Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler
Introdução a OpenGL Renato Rodrigues Oliveira da Silva Danilo Medeiros Eler Adaptado do material de Marcela X. Ribeiro Maria Cristina F. de Oliveira Rosane Minghim Sumário Introdução Núcleo OpenGL, GLU,
Computação Gráfica. 5385: Licenciatura em Engenharia Informática. Cap. 3 Janelas e Visores. Janelas e Visores
Computação Gráfica 5385: Licenciatura em Engenharia Informática Cap. 3 Janelas e Visores Janelas e Visores Sumário Definições domínio de imagem (ecrã) janela de ecrã domínio da cena (IR 2 ) janela visor
CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark
Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark Primeiro Teste 6 de Outubro de 013 O teste tem a duração de 1h00, tolerância incluída. Responda às questões
Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 2. Introdução a OpenGL
Computação Gráfica Engenharia de Computação CEFET/RJ campus Petrópolis Prof. Luis Retondaro Aula 2 Introdução a OpenGL OpenGL básico OpenGL (Open Graphical Library) Uma API para geração de gráficos 3D
Programação Gráfica Cap 2
Programação Gráfica (2.2 a 2.7) Instituto Superior Técnico, 2006/2007 Índice Programação 2D Sistemas de Coordenadas API do OpenGL Primitivas e Atributos Introdução à Cor Projecções Interacção com o Sistema
Sistemas de coordenadas
No artigo passado explicamos como desenhar um simples triângulo na tela. Entretanto, isso foi feito usando o sistema de coordenadas padrão, que mapeia a tela em intervalos de 1 até 1 em cada eixo. Esse
Viewing 3D. SCC Computação Gráfica. Prof. Fernando V. Paulovich
Viewing 3D SCC0250 - Computação Gráfica Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade de São Paulo
Linguagem de Programação I
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Introdução ao Qt O ambiente Qt Creator QML API C++ Interfaces gráficas usando Qt 2 É um framework para aplicações
Desenho de uma matriz de retângulos Serve de base para o exercício das cores
Desenho de uma matriz de retângulos Serve de base para o exercício das cores Leandro Tonietto Processamento Gráfico - Unisinos [email protected] http://professor.unisinos.br/ltonietto 19-Mar-2014 Leandro
Computação Gráfica. GLSL - Introdução e Programação da Aplicação OpenGL
Computação Gráfica GLSL - Introdução e Programação da Aplicação OpenGL António nio Ramires Fernandes - Multimédia Evolução do Hardware Gráfico PCs Controladores VGA (Video Graphics Array) Introduzido em
Sist. Coordenadas Câmera (SCC)
Transformações Modelagem Iluminação (Shading) Transformação Câmera* Recorte Projeção* Mapeamento de coordenadas de Universo para câmera Escolha da projeção: perspectiva ou ortográfica Resumo Rasterização
LAB. 1. Introdução à OpenGL
LAB. 1 Introdução à OpenGL OpenGL O que é? É uma biblioteca de funções gráficas. É uma API (Application Programming Interface) gráfica 2D e 3D Primitivas vectoriais e rasterizadas (imagens) Capaz de gerar
3 Fundamentos. 3.1 Pipeline de renderização em OpenGL
3 Fundamentos Este capítulo apresenta uma visão geral do pipeline de renderização da versão 4.0 da API OpenGL, tendo como foco os recém-introduzidos estágios de tesselação. Em seguida, é realizada uma
n À primeira vista: basta desenhar n Uma subrotina para desenhar cada tipo de objeto n Mas... n Como fazer interação? n Como estruturar a cena?
Programação Gráfica Computação Gráfica OpenGL Renato Ferreira À primeira vista: basta desenhar Uma subrotina para desenhar cada tipo de objeto Mas... Como fazer interação? Como estruturar a cena? Como
FCG2006 Prova sobre OpenGL e Rastreamento de Raios
FCG2006 Prova sobre OpenGL e Rastreamento de Raios Aluno(a): matrícula: 1. O programa SimpleLight.c mostrado no Quadro 1 produz a janela mostrada na Figura 1. A partir do código, calcule coordenadas na
UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes. Um estudo dos estágios dos pipelines gráficos
UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes Um estudo dos estágios dos pipelines gráficos Niterói 2008 Pedro Martins Menezes Um estudo dos estágios dos pipelines gráficos Trabalho de Conclusão
Animação e Visualização Tridimensional
Animação e Visualização Tridimensional Mestrado em Engenharia Informática e de Computadores Alameda º mini-teste 22 de Outubro de 204 O mini-teste tem a duração máxima de 45 minutos, tolerância incluída.
Computação Gráfica. GLSL - Programação de Shaders Toon Mapping; Texturas
Computação Gráfica GLSL - Programação de Shaders Toon Mapping; Texturas António nio Ramires Fernandes - Multimédia GLSL - Programação de Shaders Resumo Toon Shading Coordenadas de Textura Lattice Stripes
Programação Orientada a Objetos (DPADF 0063)
Programação Orientada a Objetos (DPADF 0063) Aula 1 Motivação e Introdução Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet
DESENVOLVENDO APLICAÇÕES ANDROID COM Qt Sandro Andrade KDE/IFBA
DESENVOLVENDO APLICAÇÕES ANDROID COM Qt Sandro Andrade KDE/IFBA [email protected] AGENDA DESTE TREINAMENTO O que é o Qt? Porque utilizar o Qt no desenvolvimento para mobile? Módulos do Qt voltados
Geração Procedural de Terrenos em GPU
Geração Procedural de Terrenos em GPU Felipe Gomes Sampaio Universidade Federal de Juiz de Fora Departamento de Ciência da Computação Orientadora: Jesuliana Nascimento Ulysses Agenda Introdução GPU Terrenos
Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012
CG / Terceiro Teste LEIC Alameda/Taguspark Computação Gráfica Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark Terceiro Teste 9 de Maio de O teste tem a duração de h, tolerância
Cap. 4: Janelas, Visores & Recorte Gráfico
Cap. 4: Janelas, Visores & Recorte Gráfico Sumário Definições básicas: sistema de coordenadas globais, sistema de coordenadas do ecrã; janela de domínio de cena; janela de interface e visores de saída
Luiz Gonzaga da Silveira Jr
Luiz Gonzaga da Silveira Jr O p e n G L evolução recente Luiz Gonzaga da Silveira Jr OpenGL 4.x: D3D a guerra não acabou OpenGL 4.2 - novas funcionalidades: Contadores atômicos para shaders Tesselação
Desenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o Plasma Sandro Andrade Agenda Novos requisitos para UX's Qt e QML Plasma Plasma Widgets Seu Plasma Widget em 20 minutos O Futuro Novos requisitos para UXs Cross-platform
OpenGL, GLU e GLUT. GLUT (OpenGL Utility Toolkit) OpenGL. Linguagem. OpenGL. Esqueleto de um programa em PyOpenGL
OpenGL, GLU e GLUT http://www.opengl.org/resources http://pyopengl.sourceforge.net GLUT (OpenGL Utility Toolkit) O GLUT é uma biblioteca de rotinas independentes do SO, que fornecem as ferramentas necessárias
Projeções e Visualização
Computação Gráfica 5385: Licenciatura em Engenharia Informática Cap. 4 Projeções e Visualização Projeções e Visualização Sumário Pipeline de Visualização em OpenGL x y z w vértice original MODELVIEW matrix
2º Exame de Animação e Visualização Tridimensional
º Exame de Animação e Visualização Tridimensional Mestrado de Bolonha em Eng. Informática e de Computadores pólo Alameda Prof. responsável João Madeiras Pereira 3 de Janeiro de 8 Nº Nome: Sala: Responda
Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte
Computação Gráfica Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 30 de julho de 2015 O que é computação gráfica Entrada Saída IMAGEM MODELO
Computação Gráfica OpenGl 01
Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica OpenGl 01 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti
Orientação a Objetos Programação em C++
OO - Engenharia de Computação/Eletrônica Orientação a Objetos Programação em C++ Slides 17: Programação Visual ou Orientada a Objetos Gráficos (Formulários, Botões, Caixas de Texto etc) - Exemplificado
Introdução ao OpenCV
Instituto Federal Sul-rio-grandense Campus Pelotas Engenharia Elétrica Processamento de Imagens Digitais Introdução ao OpenCV (Parte I) Glaucius Décio Duarte Atualizado em: 20 ago. 2018 OpenCV (Open Source
Linguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte V Interface Gráfica usando Qt4 História do Qt Publicado para uso em maio de 1995 Desenvolvido por Haavard
Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009
Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009 Ao desenvolver os seguintes programas tenha em atenção o bom uso dos comentários, o uso da indentação e o correcto nome
OpenGL Shading Language
OpenGL Shading Language Guilherme S. Moura ([email protected]) Saulo A. Pessoa ([email protected]) Vladimir Alves ([email protected]) Felipe Maia O que é? High Level Shading Language para OpenGL Descreve shaders
Introdução ao Desenvolvimento de Aplicações QML Lamarque V. Souza
Introdução ao Desenvolvimento de Aplicações QML Lamarque V. Souza [email protected] Objetivos Apresentar o que é Qt Meta-object Language (QML) Diferenças entre QML e Qt/C++ Demonstrar como integrar QML
OpenGL. Soraia Musse
OpenGL Soraia Musse Roteiro Introdução OpenGL x DirectX Utilização Exemplo de Programa Nomes das Funções/Métodos Bibliotecas Máquina de Estados Linhas, Pontos e Polígonos Transformações Geométricas Introdução
Interfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Sistemas Gráficos Interativos. Interações
Sistemas Gráficos Interativos Rogers & Adams: Capítulo 1 Redbook: Capítulo 1 Apostila: Capítulo 2 Interações Computador suporte em processamentos Símbolos gráficos Processamento humano Interagir com o
AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.
AULA 02 OBJETIVO: Características da Linguagem Orientada a Objetos. HABILIDADES TRABALHADAS: Comparação das características das linguagens orientadas a objetos frente às linguagens estruturadas. Conhecimentos
POO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José [email protected] http://docente.ifsc.edu.br/mello/poo
Linguagem de Programação III
Clique para editar o estilo do subtítulo mestre Linguagem de Programação III Histórico Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Comparação com Java Histórico Desenvolvido por
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Linguagens de Programação. Parte V. História do Qt. Primeiro Exemplo. Primeiras Classes. Primeiro Exemplo. Prof. Miguel Elias Mitre Campista
Linguagens de Programação Parte V Prof. Miguel Elias Mitre Campista Interface Gráfica usando Qt4 http://www.gta.ufrj.br/~miguel História do Qt Primeiro Exemplo Publicado para uso em maio de 1995 Desenvolvido
Compilação dos trabalhos: questões de concurso
1 Compilação dos trabalhos: questões de concurso UFBA/DCC/Linguagens para Aplicação Comercial/2009.1 MPU/2007 (Equipe 1) 1 Quanto às variáveis Java, um inteiro de 64 bits em notação de complemento de dois
Programação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.
Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016 4.1.6. Propriedades Como em qualquer linguagem Java ou C++, para acessar campos privados de uma classe,
Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída
Introdução aos Sistemas Operacionais Subsistema de Entrada e Saída Eleri Cardozo FEEC/Unicamp Entrada e Saída O subsistema de entrada e saída é responsável pela interface entre o sistema operacional e
Técnicas de Desenvolvimento de Games para Android
IV SRST SEMINÁRIO DE REDES E SISTEMAS DE TELECOMUNICAÇÕES INSTITUTO NACIONAL DE TELECOMUNICAÇÕES INATEL ISSN 2358-1913 AGOSTO DE 2016 Técnicas de Desenvolvimento de Games para Android Leandro Castelli
Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG
Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Visibilidade Edward Angel, Cap. 7 Apontamentos CG Pipeline de Visualização 3D Pipeline de Visualização 3D LEIC CG Sombreamento
