{"id":54,"date":"2022-03-23T22:08:49","date_gmt":"2022-03-23T22:08:49","guid":{"rendered":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/"},"modified":"2022-03-23T22:08:49","modified_gmt":"2022-03-23T22:08:49","slug":"estrutura-programa","status":"publish","type":"page","link":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/","title":{"rendered":"Estrutura programa"},"content":{"rendered":"<p>&#013;<\/p>\n<div class=\"NAVHEADER\">&#013;<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">&#013;<\/p>\n<tbody>&#013;<\/p>\n<tr>&#013;<\/p>\n<th align=\"middle\" colspan=\"3\">Introdu\u00e7\u00e3o \u00e0 computa\u00e7\u00e3o gr\u00e1fica com &#013;<br \/>\nOpenGL<\/th>\n<\/tr>\n<p>&#013;<\/p>\n<tr>&#013;<\/p>\n<td valign=\"bottom\" align=\"left\" width=\"10%\"><a href=\"conceitos-iniciais.html\">Prev<\/a><\/td>\n<p>&#013;<\/p>\n<td valign=\"bottom\" align=\"middle\" width=\"80%\">Cap\u00edtulo 1. Conceitos &#013;<br \/>\n    iniciais<\/td>\n<p>&#013;<\/p>\n<td valign=\"bottom\" align=\"right\" width=\"10%\"><a href=\"compilando-programas.html\">Next<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#013;<\/p>\n<hr align=\"left\" width=\"100%\" \/>&#013;\n<\/div>\n<p>&#013;<\/p>\n<div class=\"SECT1\">&#013;<\/p>\n<h1 class=\"SECT1\"><a name=\"OPERACAO-NORMAL\">1.2. Estrutura b\u00e1sica de um programa<\/a><\/h1>\n<p>&#013;<\/p>\n<p>Programas criados com OpenGL podem se tornar bastante complicados diante do &#013;<br \/>\nvolume de opera\u00e7\u00f5es que podem ser realizadas. Entretanto, a estrutura b\u00e1sica de um programa \u00e9 simples e &#013;<br \/>\nsemelhante a programas escritos somente em C. A <a href=\"estrutura-programa.html#FIG-ESTRUTURA\">Figura &#013;<br \/>\n1-1<\/a> d\u00e1 uma id\u00e9ia das partes de um programa escrito em&#013;<br \/>\nOpenGL.<\/p>\n<p>&#013;<\/p>\n<div class=\"FIGURE\">&#013;<\/p>\n<p><b><a name=\"FIG-ESTRUTURA\">Figura 1-1. OpenGL &#8211; Um programa b\u00e1sico (Cl\u00e1udio Esperan\u00e7a &#8211; UFRJ).<\/a><\/b><\/p>\n<p>&#013;<\/p>\n<p \/><font color=\"red\"><font color=\"red\"><font color=\"red\" \/><\/font><\/font>&#013;<\/p>\n<p><img decoding=\"async\" src=\"prog_estrutura.jpg\" \/><\/p>\n<\/div>\n<p>&#013;<\/p>\n<p><i>Callbacks<\/i> s\u00e3o rotinas respons\u00e1veis em tratar eventos (intera\u00e7\u00e3o do usu\u00e1rio, por exemplo). A &#013;<br \/>\nseq\u00fc\u00eancia de opera\u00e7\u00f5es, definida na fun\u00e7\u00e3o principal, normalmente \u00e9 composta de:<\/p>\n<p>&#013;<\/p>\n<p \/>&#013;<\/p>\n<dl>&#013;<\/p>\n<dt><i class=\"EMPHASIS\">Abra uma janela gr\u00e1fica<\/i>&#013;\n  <\/dt>\n<dd>&#013;<\/p>\n<p>Lembre-se que as fun\u00e7\u00f5es do OpenGL s\u00e3o independentes do sistema operacional &#013;<br \/>\n  utilizado. Logo, voc\u00ea ter\u00e1 que utilizar uma ou mais bibliotecas auxiliares que &#013;<br \/>\n  permitam abrir uma janelas na tela do computador, tais como GLUT, WGL (para &#013;<br \/>\n  Windows), glX (para o sistema XWindow), AGL (para Apple) ou PGL (para &#013;<br \/>\n  OS\/2).<\/p>\n<p>&#013;\n  <\/dd>\n<dt><i class=\"EMPHASIS\">Prepare OpenGL para desenhar na janela<\/i>&#013;\n  <\/dt>\n<dd>&#013;<\/p>\n<p>Defina como OpenGL ir\u00e1 desenhar nesta janela, por exemplo, se ser\u00e1 &#013;<br \/>\n  utilizado <i class=\"FOREIGNPHRASE\">double buffering<\/i> ou <i class=\"FOREIGNPHRASE\">single buffering<\/i>, e se as imagens ser\u00e3o geradas &#013;<br \/>\n  utilizando mapa de cores indexado ou diretamente no formato RGB.<\/p>\n<p>&#013;\n  <\/dd>\n<dt><i class=\"EMPHASIS\">Defina o sistema de coordenadas e o estado inicial do &#013;<br \/>\n  OpenGL<\/i>&#013;\n  <\/dt>\n<dd>&#013;<\/p>\n<p>Indique as caracter\u00edsticas do sistema de coordenadas a ser utilizado, por &#013;<br \/>\n  exemplo, os limites inferior e superior dos eixos coordenados. Defina as &#013;<br \/>\n  fontes de luz existentes, cores para desenho de pol\u00edgonos, modos de &#013;<br \/>\n  preenchimento de superf\u00edcies etc.<\/p>\n<p>&#013;\n  <\/dd>\n<dt><i class=\"EMPHASIS\">Loop:<\/i>&#013;\n  <\/dt>\n<dd>&#013;<\/p>\n<p \/>&#013;<\/p>\n<ul>&#013;<\/p>\n<li>&#013;\n<p>Trate os eventos de mouse e teclado;<\/p>\n<p>&#013;\n    <\/li>\n<li>&#013;\n<p>Mude a cena com base nos eventos ocorridos;<\/p>\n<p>&#013;\n    <\/li>\n<li>&#013;\n<p>Redesenhe a cena com OpenGL.<\/p>\n<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n<\/div>\n<p>&#013;<\/p>\n<div class=\"NAVFOOTER\">&#013;<\/p>\n<hr align=\"left\" width=\"100%\" \/>&#013;<br \/>\n&#013;<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">&#013;<\/p>\n<tbody>&#013;<\/p>\n<tr>&#013;<\/p>\n<td valign=\"top\" align=\"left\" width=\"33%\"><a href=\"conceitos-iniciais.html\">Prev<\/a><\/td>\n<p>&#013;<\/p>\n<td valign=\"top\" align=\"middle\" width=\"34%\"><a href=\"index2005.html\">Home<\/a><\/td>\n<p>&#013;<\/p>\n<td valign=\"top\" align=\"right\" width=\"33%\"><a href=\"compilando-programas.html\">Next<\/a><\/td>\n<\/tr>\n<p>&#013;<\/p>\n<tr>&#013;<\/p>\n<td valign=\"top\" align=\"left\" width=\"33%\">Conceitos iniciais<\/td>\n<p>&#013;<\/p>\n<td valign=\"top\" align=\"middle\" width=\"34%\"><a href=\"conceitos-iniciais.html\">Up<\/a><\/td>\n<p>&#013;<\/p>\n<td valign=\"top\" align=\"right\" width=\"33%\">Compilando programas que utilizam &#013;<br \/>\n      OpenGL<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#013; &#013; &#013; &#013; &#013; Introdu\u00e7\u00e3o \u00e0 computa\u00e7\u00e3o gr\u00e1fica com &#013; OpenGL &#013; &#013; Prev &#013; Cap\u00edtulo 1. Conceitos &#013; iniciais &#013; Next &#013; &#013; &#013; &#013; 1.2. Estrutura b\u00e1sica de um programa &#013; Programas criados com OpenGL podem se tornar bastante complicados diante do &#013; volume de opera\u00e7\u00f5es que podem ser realizadas. Entretanto, a &hellip; <a href=\"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/\" class=\"more-link\">Continuar lendo <span class=\"screen-reader-text\">Estrutura programa<\/span><\/a><\/p>\n","protected":false},"author":48,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-54","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Estrutura programa - Marco Antonio Garcia de Carvalho, PhD<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Estrutura programa - Marco Antonio Garcia de Carvalho, PhD\" \/>\n<meta property=\"og:description\" content=\"&#013; &#013; &#013; &#013; &#013; Introdu\u00e7\u00e3o \u00e0 computa\u00e7\u00e3o gr\u00e1fica com &#013; OpenGL &#013; &#013; Prev &#013; Cap\u00edtulo 1. Conceitos &#013; iniciais &#013; Next &#013; &#013; &#013; &#013; 1.2. Estrutura b\u00e1sica de um programa &#013; Programas criados com OpenGL podem se tornar bastante complicados diante do &#013; volume de opera\u00e7\u00f5es que podem ser realizadas. Entretanto, a &hellip; Continuar lendo Estrutura programa\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/\" \/>\n<meta property=\"og:site_name\" content=\"Marco Antonio Garcia de Carvalho, PhD\" \/>\n<meta property=\"og:image\" content=\"http:\/\/prog_estrutura.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/estrutura-programa\\\/\",\"url\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/estrutura-programa\\\/\",\"name\":\"Estrutura programa - Marco Antonio Garcia de Carvalho, PhD\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/#website\"},\"datePublished\":\"2022-03-23T22:08:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/estrutura-programa\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/estrutura-programa\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/estrutura-programa\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Estrutura programa\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/#website\",\"url\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/\",\"name\":\"Marco Antonio Garcia de Carvalho, PhD\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wordpress.ft.unicamp.br\\\/magic\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Estrutura programa - Marco Antonio Garcia de Carvalho, PhD","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/","og_locale":"pt_BR","og_type":"article","og_title":"Estrutura programa - Marco Antonio Garcia de Carvalho, PhD","og_description":"&#013; &#013; &#013; &#013; &#013; Introdu\u00e7\u00e3o \u00e0 computa\u00e7\u00e3o gr\u00e1fica com &#013; OpenGL &#013; &#013; Prev &#013; Cap\u00edtulo 1. Conceitos &#013; iniciais &#013; Next &#013; &#013; &#013; &#013; 1.2. Estrutura b\u00e1sica de um programa &#013; Programas criados com OpenGL podem se tornar bastante complicados diante do &#013; volume de opera\u00e7\u00f5es que podem ser realizadas. Entretanto, a &hellip; Continuar lendo Estrutura programa","og_url":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/","og_site_name":"Marco Antonio Garcia de Carvalho, PhD","og_image":[{"url":"prog_estrutura.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/","url":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/","name":"Estrutura programa - Marco Antonio Garcia de Carvalho, PhD","isPartOf":{"@id":"https:\/\/wordpress.ft.unicamp.br\/magic\/#website"},"datePublished":"2022-03-23T22:08:49+00:00","breadcrumb":{"@id":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wordpress.ft.unicamp.br\/magic\/estrutura-programa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wordpress.ft.unicamp.br\/magic\/"},{"@type":"ListItem","position":2,"name":"Estrutura programa"}]},{"@type":"WebSite","@id":"https:\/\/wordpress.ft.unicamp.br\/magic\/#website","url":"https:\/\/wordpress.ft.unicamp.br\/magic\/","name":"Marco Antonio Garcia de Carvalho, PhD","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wordpress.ft.unicamp.br\/magic\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/pages\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/pages\/54\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.ft.unicamp.br\/magic\/wp-json\/wp\/v2\/media?parent=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}