Você está na página 1de 5

Curso GRA1567 MATEMATICA E FISICA APLICADAS A JOGOS GR2007211 - 202110.ead-8218.

05
Teste ATIVIDADE 2 (A2)
Iniciado 29/03/21 14:59
Enviado 01/04/21 21:49
Status Completada
Resultado da tentativa 5 em 10 pontos
Tempo decorrido 78 horas, 49 minutos
Resultados exibidos Respostas enviadas, Respostas corretas, Comentários

Pergunta 1
0 em 1 pontos

Os sistemas gráficos modernos oferecem uma enorme flexibilidade na forma como a


renderização ocorre. A funcionalidade mais simples é obtida escrevendo um
sombreador de vértice ( vertex shader) e de um de fragmento ( fragment shader). Um
sombreador de vértice é um pequeno programa que é executado uma vez para cada
vértice. As principais entradas para um sombreador de vértice são os atributos de
um único vértice. Em uma aplicação típica, o sombreador de vértice pode receber as
coordenadas x, y, z do vértice e, talvez, uma coordenada de cor ou textura. O
sombreador de vértice pode fazer cálculos bastante sofisticados, incluindo alterar
os dados por vértice, as coordenadas de cor ou textura ou, até, a posição do
vértice. A saída principal do sombreador de vértice é um valor que fornece as
coordenadas x, y do vértice nas coordenadas da tela, que também fornece um valor de
“profundidade” que será usado para o cálculo da superfície oculta.
Um sombreador de vértice produz outros valores específicos do sombreador, como os
componentes RGB, vermelho, verde e azul da cor do pixel.
Dito isso, e considerando os estudos realizados, qual das alternativas a seguir
descreve um tipo de entrada inválido para um vertex shader?
Resposta Selecionada:
Incorreta .Arrays: vec4[2].
Resposta Correta:
Correta .Estruturas: struct vertex {vec4 Color; }.
Comentário da resposta: Sua resposta está incorreta. O vertex shader é declarado
como unsigned int. Recorde o código completo de ShaderMgrSDM.cpp e tente novamente.
Pergunta 2
0 em 1 pontos

As entradas para o sombreador de fragmento correspondem aos valores específicos do


sombreador emitidos pelo sombreador de vértice. Por padrão, cada entrada desse tipo
no shader de fragmento é calculada como uma média dos valores específicos do shader
correspondente, produzidos pelo shader de vértice. Ou seja, ao renderizar um
triângulo, uma entrada para o shader de fragmento é uma média das saídas dos
shaders de vértice para os três vértices do triângulo.
Assim, por que o fragment shader é necessário na triangularização para o OpenGL?
Resposta Selecionada:
Incorreta .Para dividir a imagem em fragmentos e as sombrearem.
Resposta Correta:
Correta .Para calcular a cor necessária para suavizar a imagem, pixel por pixel.
Comentário da resposta: Resposta incorreta. A saída principal do fragment shader é
um vetor que fornece os componentes vermelho, verde e azul do pixel (acrescentado
de um valor alfa ou transparência). Tente novamente.
Pergunta 3
1 em 1 pontos

O OpenGL é uma API independente de plataforma (interface de programação de


aplicativos) para renderização de gráficos 3D. Uma grande vantagem do uso do OpenGL
é que ele é um padrão do setor amplamente suportado em diversos sistemas
operacionais, ambientes e plataformas. Para suportar o desenho da Computação
Gráfica 3D, bibliotecas dessa natureza tratam a tela do computador (display) como
um espaço de coordenadas euclidiano, tridimensional, x-, y- e z-, sendo esta última
coordenada a percepção de profundidade, ou proximidade do usuário com a imagem ou
animação.
Para projetar gráficos bidimensionais 2D, faz-se necessário o uso de alguns
artifícios matemáticos e físicos para manipular o espaço de coordenadas.
Dito isso, os códigos mostrados nas alternativas mostram a construção de uma matriz
no espaço de coordenadas, representando a construção de um triângulo 2D,
bidimensional, ou seja, plano. Assim, em qual das opções esse triângulo ficaria
projetado sem a noção de profundidade, ou seja, adequado para um jogo em 2D?
Resposta Selecionada:
Correta . float verts2[] = {
0.25, 0.5, 0.0, // Vértice w0
1.25, 1.0, 0.0, // Vértice w1
0.75, 1.5, 0.0, // Vértice w2
1.75, 1.8, 0.0, // Vértice w3
2.0, 3.0, 0.0, // Vértice w4
1.05, 2.5, 0.0, // Vértice w5
0.4, 2.4, 0.0, // Vértice w6
}.
Resposta Correta:
Correta .float verts2[] = {
0.25, 0.5, 0.0, // Vértice w0
1.25, 1.0, 0.0, // Vértice w1
0.75, 1.5, 0.0, // Vértice w2
1.75, 1.8, 0.0, // Vértice w3
2.0, 3.0, 0.0, // Vértice w4
1.05, 2.5, 0.0, // Vértice w5
0.4, 2.4, 0.0, // Vértice w6
}.
Comentário da resposta: Perfeito! Você pensou corretamente e certamente deve ter
analisado a relação funcional em OpenGL. Para realizar esse ajuste, é necessário
zerar as coordenadas ‘z’ de todos os pontos do triângulo, que são representadas
pela última informação ponto a ponto da matriz.
Pergunta 4
0 em 1 pontos

Uma imagem digital é composta de linhas e colunas de pixels. Em termos de


coordenadas, um pixel pode ser identificado por um par de números inteiros,
fornecendo o número da coluna e o número da linha. Por exemplo, o pixel com
coordenadas (3,5) estaria na coluna número 3 e na linha número 5 (Figura 1).
Convencionalmente, as colunas são numeradas da esquerda para a direita, começando
com zero.
Uma imagem contendo shoji, quebra-cabeçaDescrição gerada automaticamente
Figura 1: Posição endereçável em um sistema de coordenadas
Fonte: Eck, 2018.
Pixels são uma aproximação. Se imaginarmos que há uma imagem ideal verdadeira que
queremos exibir, qualquer imagem que exibirmos colorindo pixels é uma aproximação.
Levando o exposto em consideração, as propriedades/atributos fundamentais de um
pixel são:
Resposta Selecionada:
Incorreta .pixel é um ponto e, como tal, não têm propriedades.
Resposta Correta:
Correta .cor e posição.
Comentário da resposta: Incorreto. Considerando que o pixel é uma aproximação de
uma imagem real, é preciso levar m consideração que existem propriedade básicas que
essa aproximação seja alcançada. Com isso em mente, pense em quais atributos
essenciais são esses e tente novamente.
Pergunta 5
0 em 1 pontos

Em OpenGL, os modos de exibição conceitual de pontos, linhas e triângulos são


descritos no espaço usando coordenadas x, y, z. A ideia crucial é que uma
superfície tridimensional arbitrária exibida em tela pode ser aproximada por um
conjunto de triângulos, e suavizada nos vértices desses triângulos por meio de
técnicas de sombreamento. Existem três modelos para os modos gráficos de exibição:
(1) pontos de desenho, (2) linhas de desenho e (3) triângulos de desenho. Os três
modelos são diferentes arquiteturas de hardware para exibição gráfica. Os pontos de
desenho correspondem ao modelo de uma imagem gráfica, como uma matriz de pixels num
formato retangular. Por sua vez, as linhas de desenho correspondem à exibição
vetorial de gráficos. Finalmente, o desenho de triângulos corresponde aos métodos
usados pelos sistemas gráficos mais modernos, que podem exibir imagens
tridimensionais. Esses modelos são representados em tempo de programação por
identificadores de layout.
Uma imagem contendo objeto, medidorDescrição gerada automaticamente
Figura 3: Triângulos e métodos de geração em OpenGL
Fonte: Elaborada pelo autor.

Dito isso, e considerando os estudos realizados, qual modo não é um identificador


de layout primitivo de entrada válido?
Resposta Selecionada:
Incorreta .triangles_adjacency.
Resposta Correta:
Correta .triangle_strip.
Comentário da resposta: Resposta incorreta. O item selecionado é um tipo de layout
primitivo de entrada válido em OpenGL. Tente novamente.
Pergunta 6
1 em 1 pontos

Para realizar animação em tempo de programação, basta desenhar uma sucessão de


cenas estáticas, chamadas quadros, mostrando uma instância no tempo. Ou seja, o
movimento é apenas uma ilusão visual; A ilusão de movimento é obtida exibindo
rapidamente quadros sucessivos. Filmes e vídeos normalmente têm uma taxa de quadros
de 24 ou 48 quadros por segundo. As taxas de quadros em gráficos de computador, por
sua vez, podem variar com a potência do computador e com a complexidade da
renderização de gráficos, mas geralmente é desejável ter 30 quadros por segundo e,
mais idealmente, obter 60 quadros por segundo. Essas taxas de quadros são bastante
adequadas para proporcionar um movimento suave na tela.
Dito isso, e considerando os estudos realizados, selecione o trecho de código a
seguir que corresponde ao comando correto para configurar uma taxa de 24 fps
(frames por segundo) em OpenGL:
Resposta Selecionada:
Correta . while (!glfwWindowShouldClose(window)) {
myRenderScene();
glfwSwapBuffers(window);
glfwWaitEventsTimeout(1.0/24.0);
}
Resposta Correta:
Correta .while (!glfwWindowShouldClose(window)) {
myRenderScene();
glfwSwapBuffers(window);
glfwWaitEventsTimeout(1.0/24.0);
}
Comentário da resposta: Resposta correta. O comando exibido mostra a utilização da
função glWaitEventsTimeout, da biblioteca glfw3, em que se pode definir diversas
rotinas para diferentes técnicas avançadas em OpenGL, incluindo a de double
buffering, para animação.
Pergunta 7
1 em 1 pontos

Problemas de aliasing surgem ao converter entre representações analógicas e


digitais, ou ao converter entre diferentes representações digitais de resolução. Um
exemplo simples são as linhas irregulares que resultam ao desenhar uma linha reta
em pixels de uma matriz retangular. Esses problemas de aliasing
podem ser particularmente perturbadores para cenas animadas.
Uma maneira simples de reduzir drasticamente os problemas de aliasing em um
programa OpenGL é incluir as duas linhas a seguir para ativar o antialiasing
de multisampling (MSAA):
glfwWindowHint(GLFW_SAMPLES,4); // Invoca o MSAA
glEnable(GL_MULTISAMPLE);
Considerando estas informações, qual o principal recurso que um jogo que utiliza a
técnica de multisampling vai consumir do computador?
Resposta Selecionada:
Correta .Memória de Acesso Randomico (RAM).
Resposta Correta:
Correta .Memória de Acesso Randomico (RAM).
Comentário da resposta: Resposta correta. Devido ao fato de utilizar quatro valores
de cores e profundidade por pixel, a única forma de realizar a alocação da memória
a ser utilizada no anti-aliasing
de várias amostras ( multisampling) é por meio de alocação dinâmica de memória em
tempo de execução. Mesmo que o processamento do código se dê na GPU, o principal
recurso sendo consumido é o da memória, principalmente para animações complexas.
Pergunta 8
0 em 1 pontos

O sombreador de fragmento ( fragment shader) é um pequeno programa que é executado


uma vez para cada pixel renderizado. Ele é chamado quando os pixels são realmente
renderizados em um buffer de estrutura. O framebuffer
é uma matriz bidimensional de valores, geralmente mantendo um valor de cor e um
valor de profundidade para cada pixel da imagem.
Dito isso, quais dos tipos a seguir não é uma saída válida para um fragment shader?
Resposta Selecionada:
Incorreta .float[4].
Resposta Correta:
Correta .dvec4.
Comentário da resposta: Sua resposta está incorreta. A opção selecionada é válida
para atribuição da variável de saída de FragColor (que representa o fragment
shader), levando em consideração que representa uma cor de sombreamento. Tente
novamente.
Pergunta 9
1 em 1 pontos

Para o desenvolvimento de jogos, design arquiteturais, filmes animados,


simuladores, efeitos especiais, entre outras aplicações, é necessário um processo
que aumente a eficiência e, ao mesmo tempo, reduza o custo na geração de imagens
bi-dimensionais e tri-dimensionais. Isto pode ser feito a partir de modelos
abstratos por meio de programas de aplicação, e as técnicas e funcionalidades
utilizadas variam imensamente de acordo com o projeto.
Dito isso, e considerando os estudos realizados, como se chama o processo de gerar
imagens bidimensionais a partir de uma cena ou objeto tridimensional?
Resposta Selecionada:
Correta .Renderização (rendering).
Resposta Correta:
Correta .Renderização (rendering).
Comentário da resposta: Correto! Renderização é o processo de obtenção de um
produto final por meio de um processamento digital específico.
Pergunta 10
1 em 1 pontos

O termo "sombreamento" (ou shading) significa o processo de deixar a cor ou o


brilho variar suavemente na superfície. O sombreamento é uma ferramenta importante
para criar imagens realistas, principalmente quando combinadas com modelos de
iluminação que calculam cores das propriedades do material e das propriedades da
luz, ao invés de usar cores definidas explicitamente pelo programador. Os programas
de sombreamento são assim chamados porque foram originalmente destinados ao
controle de sombreamento de triângulos. No entanto, eles podem ser usados para
muitos outros fins.
Dito isso, e considerando os estudos realizados no e-book da disciplina, é correto
afirmar que não é um tipo de sombreamento:
Resposta Selecionada:
Correta .Bézier shading.
Resposta Correta:
Correta .Bézier shading.
Comentário da resposta: Resposta correta. Uma superfície de Bézier é definida por
um conjunto de pontos de controle. Embora seja semelhante à interpolação em muitos
aspectos, uma diferença fundamental é que a superfície, em geral, não passa pelos
pontos de controle central, mas é "esticado" na direção deles, como se cada um
fosse uma força atraente. Eles são visualmente intuitivos e, para muitas
aplicações, são matematicamente convenientes.

Você também pode gostar